Python 具有数据库值的动态关键字
我有一个这样的模型:Python 具有数据库值的动态关键字,python,django,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"
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()
在realdict
中包含60项,并且c
在for循环中每次都会更改。此示例中的代码导致错误:NameError:未定义名称“U1N”。
如何动态设置q的关键字?您可以使用
setattr
来动态设置对象的属性。您还可以从dict
动态构建dict(您不应该使用内置名称作为标识符BTW),并将其作为kwargs传递给meter1()
(顺便说一句,你不应该使用所有lowers作为类名)。哦,是的:你可能还想看看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)
setattr
怎么样?啊,是的,谢谢。我被eval()卡住了,忽略了setattr.+1的帮助!谢谢你的提示!我会研究它们的+1