[Qgis-developer] Change feature via Python

bernhard.stroebl at jena.de bernhard.stroebl at jena.de
Mon Sep 5 04:45:04 EDT 2011


Dear devs,

my situation is as follows:
I am working on some Python code. I have a non-spatial layer in the 
project created from a PostgreSQL table.
For this layer I can (via Python):
1) create a new feature, manipulate its attribute values and add it to 
the layer
2) access an existing feature and its attribute values by this code:
feat = QgsFeature()
ok = layer.featureAtId(fid, feat, False, True)
3) open the feature form and have the user manipulate the attribute 
values of either 1) or 2)

However I could not find a way to access an existing feature and 
manipulate its attribute values so that the changed values are written 
back to the layer just like the feature form does.
I understand that the feature is not part of the layer as soon as it is 
accessed by the code given above. Is there a way to replace a feature in 
a layer or change its attribute values other than via feature form?

To delete the original feature and add a new feature with changed values 
afterwards is not a solution because there are foreign keys defined on 
the feature's id. So deletion would not be allowed (foreign-key option 
RESTRICT) or related datasets in other tables would be deleted, too 
(foreign-key option CASCADE). So this is not viable.

any hints are welcome

regards

Bernhard



________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Server.
http://www.nod32.com


More information about the Qgis-developer mailing list