No dejes de divulgar nuestro espacio y códigos en tus redes, necesitamos de tu ayuda para hacer crecer nuestra comunidad.
Solución:
Puede usar el siguiente código que conecta el attributeValueChanged
evento a una función que podemos definir que inserta los resultados de la $now
expresión. Resalta tu capa y copia/pega lo siguiente en el Consola Python:
layer = qgis.utils.iface.activeLayer()
def update():
field = layer.fieldNameIndex('mod')
e = QgsExpression( " $now " )
e.prepare( layer.pendingFields() )
for feat in layer.selectedFeatures():
feat[field] = e.evaluate( feat )
layer.updateFeature( feat )
layer.attributeValueChanged.connect(update)
Seleccione la función haciendo clic en el número de fila (que se muestra en el cuadro rojo de la imagen) o desde el lienzo del mapa y edite ninguna attribute para esa característica. los attribute en tus mod
el campo debe actualizarse:
Nota: usé un string campo en lugar de fecha para obtener la hora, de lo contrario, el campo de fecha solo registra AAAA-MM-DD.
Me topé con esta pregunta y respuesta mientras buscaba una forma de marcar los cambios de fecha/hora que estaba haciendo en los registros usando un complemento. Coloqué una versión ligeramente modificada del código en el complemento para actualizar automáticamente la fecha/hora en los registros que cambié:
""" Prepare Change Date/Time Stamp"""
e = QgsExpression( " $now " )
cDate = e.evaluate()
"""" Identify column(s) to change and new value(s) to assign"""
attrs = 10 : newStat, 20 : cDate
""" Make record change and capture date/time of change'''
layer.dataProvider().changeAttributeValues( fid : attrs )
Sección de Reseñas y Valoraciones
Si estás de acuerdo, eres capaz de dejar un enunciado acerca de qué le añadirías a este ensayo.