I wish to create a field which automatically updates with the current timestamp when edits are made to a feature.
I am using QGIS 3.4 and I am testing this using a shapefile.
Following @Joseph's answer for this question I tried updating his script to work in QGIS 3.4 as per his instructions (if I followed them correctly, not guaranteed!) to this:
layer = qgis.utils.iface.activeLayer()
def update():
field = layer.fields().lookupField('fieldName')
e = QgsExpression( " $now " )
e.prepare( layer.pendingFields() )
for feat in layer.selectedFeatures():
feat[field] = e.evaluate( feat )
layer.updateFeature( feat )
layer.attributeValueChanged.connect(update)
However this returns the following error:
2018-11-29T11:13:00 WARNING Traceback (most recent call last):
File "", line 4, in update
AttributeError: 'QgsVectorLayer' object has no attribute 'pendingFields'
What's wrong here?
Also will this work on geometry edits or only with attribute edits?
Will this also work for a SpatiaLite layer?
No comments:
Post a Comment