In a vector layer table there are two fields F1
and F2
with float type. I want to multiply these fields and insert results to new field F3
.
In below code new field created but without any value. What is problem?
layer = iface.activelayer()
F1 = self.ui.cBox_Width.currentText()
F2 = self.ui.cBox_Length.currentText()
new_Field = "F3"
provider = layer.dataProvider()
caps = provider.capabilities()
idx = provider.fieldNameIndex(new_Field)
try:
if idx == -1:
if caps & QgsVectorDataProvider.AddAttributes:
res = provider.addAttributes([QgsField(new_Field, QVariant.Double)])
except:
return False
layer.startEditing()
bufferfield = layer.fieldNameIndex('buffer_km')
formula = QgsExpression("\"F1\" * \"F2\"")
formula.prepare(layer.pendingFields())
for f in layer.getFeatures():
f[idx] = formula.evaluate(f)
layer.updateFeature(f)
layer.updateFields()
layer.commitChanges()