Thursday 21 January 2016

pyqgis - How to set and configure a value relation edittype in QGIS 2.0?


I am trying to set the edit type of a vector layer to use a value relation. The Python commands below are processed without errors or warnings, but the when I check the properties in QGIS, only the EditType is set, but the data settings are empty. I use:



vlayer.setEditType(12, QgsVectorLayer.ValueRelation)
vlayer.ValueRelationData( 'releatedtable20131027113855772', 'key', 'value',False, True)

I got the name of the related table by inspecting:


ml=QgsMapLayerRegistry.instance().mapLayers()
dict(ml)

My guess is that I use the wrong string for referencing the layername. I have two questions: How to get the layername string to be used in ValueRelationData? Should I add further code to get it all working?



Answer



The correct approach is to directly modify the ValueRelationData object you get from vlayer.valueRelation( idx )



vlayer.setEditType(12, QgsVectorLayer.ValueRelation)
vlayer.valueRelation(12).mLayer = 'releatedtable20131027113855772'
vlayer.valueRelation(12).mKey = 'key'
vlayer.valueRelation(12).mValue = 'value'
vlayer.valueRelation(12).mAllowNull = False
vlayer.valueRelation(12).mOrderByValue = True
# vlayer.valueRelation(12).mAllowMulti = True
# vlayer.valueRelation(12).mFilterExpression = 'COALESCE( "fieldA", \'\' )'

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...