Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django model field by variable

Tags:

python

django

Quick question. I'm trying yo access one of the fields of a model using a variable.

class ExampleModel(models.Model):       the_field = models.CharField()       the_field_two = models.CharField() 

How would access the field dynamically? I tried:

model = ExampleModel.objects.get(pk=1) fieldtoget = 'the_field' test_var = model[fieldtoget] 

But it doesn't seem to work, any ideas how I would do this?

Update: Thought I'd update my question. I'm trying to write a function (as part of larger function) that can not only get the value of the field but also update it from a variable fieldname. For example:

model[fieldtoget] = 'yo' model.save() 

In PHP you can use the {} wrapper - $model{$fieldtoget} - as an example, for dynamic variable names was hoping there was something similar in python :)

Cheers

like image 918
Ben Kilah Avatar asked Jul 13 '12 04:07

Ben Kilah


1 Answers

You can use pythons getattr function to do this. Pass the field name in as the attribute.

getattr(model, fieldtoget) 

Since fieldtoget is a variable, this is dynamic.

You can use setattr to set it the same way.

like image 197
Ashray Baruah Avatar answered Oct 02 '22 08:10

Ashray Baruah