Hey guys,

I feel really dumb and I guess I am missing some basic concept...:

 * I have a layer with two attributes: "text" (string) and "int" (integer).
 * I used drag'n'drop form design to have a form with just the "text"
   attribute in it.
 * I added Python Init Code:

```
from functools import partial

def on_ok(layer, feature):
    field_idx = layer.fields().indexOf("int")
    attribute_changed = layer.changeAttributeValue(feature.id(), field_idx, 12345)
    if not attribute_changed:
        raise Exception("Attribute value could not be changed!")

def my_form_open(dialog, layer, feature):
    ok_button = dialog.findChild(QPushButton)
    ok_button.clicked.connect(partial(on_ok, layer, feature))
```

So the form does not show an input widget for the "int" field. But when pressing OK, the code should change the edited feature's "int" value to 12345.

This works if I edit existing features.

But if I create a new feature, the "int" value will be empty/NULL instead of 12345.

Any pointers on how to properly update a new feature's attribute fields, that exist on a layer but are not shown the user with the QGIS' widgets in the attribute form?

Cheers, Hannes
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to