带数据库值的动态关键字

2024-10-01 04:52:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个模型:

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的关键字


Tags: 模型import视图数据库defaultmodelmodelsdef
2条回答

您还可以从dict(您不应该使用内置名称作为标识符BTW)动态构建dict,并将其作为kwargs传递给meter1()(您不应该使用所有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)

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

相关问题 更多 >