如何从列表中按名称从django模型中获取字段
How to get field from django model by name from list
我有这样的模型:
class mymodel(models.Model):
val1 = models.FloatField(default=0)
val2 = models.FloatField(default=0)
...and more var with other names
name = models.CharField(max_length=200)
url = models.CharField(max_length=200)
我需要更改许多模型中的值,但不是所有字段(仅来自列表)
list= ['val1', 'val2' .... 'val15']
for entry in list:
mymodel.entry = data[entry]
我该怎么做?我试过 {entry}, entry, [entry]
您可以使用 setattr
[python-doc] 来设置属性。因此,这意味着 setattr(x, 'y', z)
等同于 x.y = z
,因此您可以使用:
mylist = ['val1', 'val2' .... 'val15']
for entry in mylist:
<b>setattr(</b>mymodel, entry, data[entry]<b>)</b>
注意 mymodel
这里应该是模型 object,而不是 class,否则你正在破坏 class 上定义的字段,而不是在数据库中创建记录。
我有这样的模型:
class mymodel(models.Model):
val1 = models.FloatField(default=0)
val2 = models.FloatField(default=0)
...and more var with other names
name = models.CharField(max_length=200)
url = models.CharField(max_length=200)
我需要更改许多模型中的值,但不是所有字段(仅来自列表)
list= ['val1', 'val2' .... 'val15']
for entry in list:
mymodel.entry = data[entry]
我该怎么做?我试过 {entry}, entry, [entry]
您可以使用 setattr
[python-doc] 来设置属性。因此,这意味着 setattr(x, 'y', z)
等同于 x.y = z
,因此您可以使用:
mylist = ['val1', 'val2' .... 'val15']
for entry in mylist:
<b>setattr(</b>mymodel, entry, data[entry]<b>)</b>
注意 mymodel
这里应该是模型 object,而不是 class,否则你正在破坏 class 上定义的字段,而不是在数据库中创建记录。