如何从列表中按名称从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 上定义的字段,而不是在数据库中创建记录。