【问题标题】:How to get field from django model by name from list如何从列表中按名称从 django 模型中获取字段
【发布时间】:2021-03-21 18:25:23
【问题描述】:

我有这样的模型:

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]

【问题讨论】:

  • 什么是data,字典?

标签: python django list model


【解决方案1】:

您可以使用setattr [python-doc] 来设置属性。这意味着setattr(x, 'y', z) 等同于x.y = z,因此您可以使用:

mylist = ['val1', 'val2' .... 'val15']
for entry in mylist:
    setattr(mymodel, entry, data[entry])

注意这里的mymodel 应该是一个模型对象,而不是,否则你会破坏类上定义的字段,而不是在数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 2016-03-26
    • 2021-09-18
    • 1970-01-01
    • 2013-11-21
    • 2018-12-14
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多