37

快速提问。我正在尝试使用变量访问模型的其中一个字段。

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

如何动态访问该字段?我试过:

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

但这似乎不起作用,有什么想法我会怎么做?

更新:以为我会更新我的问题。我正在尝试编写一个函数(作为更大函数的一部分),它不仅可以获取字段的值,还可以从变量字段名更新它。例如:

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

在 PHP 中,您可以使用 {} 包装器 -$model{$fieldtoget}例如,对于动态变量名称,希望在 python 中有类似的东西 :)

干杯

4

1 回答 1

74

您可以使用 pythons getattr 函数来执行此操作。将字段名称作为属性传入。

getattr(model, fieldtoget)

由于 fieldtoget 是一个变量,因此它是动态的。

您可以使用 setattr 以相同的方式设置它。

于 2012-07-13T04:26:15.027 回答