When I try to calculate a new field. I receive the following error:

idx = self.layer.fieldNameIndex(attributeName)
AttributeError: 'QgsVectorLayer' object has no attribute 'fieldNameIndex'

What´s the problem? I'm using QGIS 3.0.1 64x in windows.


in python 3: use


or fields().indexFromName()


idx= layer.fields().indexFromName(attributeName)

You need to access it via the QgsVectorDataProvider::fieldNameIndex method:

idx = self.layer.dataProvider().fieldNameIndex(attributeName)
  • How do you do that in the Python console? I'm a noob. – Marco Uscuchagua Apr 18 '18 at 16:28
  • @MarcoUscuchagua - Click on a layer and type layer = iface.activeLayer(). Then type idx = layer.dataProvider().fieldNameIndex("fieldName"). The self` parameter is mainly used for plugins. – Joseph Apr 20 '18 at 9:15
  • The error remains. I think it is a error of QGIS and not of my layer. – Marco Uscuchagua Apr 20 '18 at 12:17
  • @MarcoUscuchagua - What error are you receiving? Is it the same error as in your question? – Joseph Apr 20 '18 at 12:34
  • 1
    I found the solution!! The problem was in the Quick Attribution plugin, its reinstallation solved the problem. Thanks @Joseph – Marco Uscuchagua Apr 24 '18 at 0:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.