我有一个这样的模型:
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的关键字?
答案 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
动态设置对象的属性。