动态关键字与数据库值

时间:2014-07-17 10:48:14

标签: python django

我有一个这样的模型:

class meter1(models.Model):
    U1N = models.FloatField(default=0)
    U2N = models.FloatField(default=0)

在我看来(简化)我想动态设置数据库的值:

def import_data:
    dict = {"1":"U1N","2":"U2N",}
    c = "1"
    q = meter1()
    q.eval('dict[c]') = "1"
    q.save()

真实dict包含60个项目,而c每次都在for循环中更改。此示例中的代码会导致错误:NameError: name 'U1N' is not defined.

如何动态设置q的关键字?

2 个答案:

答案 0 :(得分:1)

你也可以从你的dict动态构建一个dict(你不应该使用内置名称作为标识符BTW)并将其作为kwargs传递给meter1()(你不应该使用all-lowers作为班级名称BTW)。哦,是的:您也可以查看modelmanager.create()

def import_data():
    fieldmap = {"1":"U1N","2":"U2N",}
    fieldindex = "1"
    kw = {fieldmap[fieldindex]: 1.0}

    # either:
    q = Meter1(**kw)
    q.save()

    # or:
    q = Meter1.objects.create(**kw)

答案 1 :(得分:0)

您可以使用setattr动态设置对象的属性。