I've a function that join two added layers. The code works fine, but now I need to test for previously joined layers before run this function. The function code is right below:
def jointables(dict): # this dict provides [targetLayer:layerToJoin]
for k, v in dict.items():
target = QgsProject.instance().mapLayer(k)
layerToJoin = QgsProject.instance().mapLayer(v)
fieldToJoin = QgsProject.instance()
symb = QgsVectorLayerJoinInfo()
symb.setJoinFieldName('id_feature')
symb.setTargetFieldName('id')
symb.setJoinLayerId(layerToJoin.id())
symb.setEditable(True)
symb.setDynamicFormEnabled(True)
symb.setUpsertOnEdit(True)
symb.setPrefix('')
symb.setJoinLayer(layerToJoin)
target.addJoin(symb)
I've tried some things like this:
for k, v in dict.items():
if QgsProject.instance().mapLayer(k).addJoin(QgsVectorLayerJoinInfo()) == True:
break
else:
continue
or
for k, v in dict.items():
if QgsVectorLayerJoinInfo().isEditable() == True:
break
else:
continue
among others. I've missing something. Both conditionals has the same value True, doesnt matter if already exists an previously joined layer or not. How can I solve this?
No comments:
Post a Comment