django 在视图中使用变量更改数据库字段的值

django changing a value of databe field using variable in view

有什么方法可以使用变量更新模型实例中特定字段的手动值吗?

例如

models.py

class ExampleModel(models.Model):
        name=models.CharField(max_length=10)
        a=models.CharField(max_length=10)
        b=models.CharField(max_length=10)
        c=models.CharField(max_length=10)

views.py

list=[a,b,c]
fruits=[orange,apple,banana]
values
def ExampleView(request):
    model_instsnce=ExampleModel.objects.last()
    for i in list:
    instance_model.i=fruits[i]
    model_instance.save()

在我的项目中,我尝试使用类似上面的方法,但它不起作用。 'i' from loop 的行为不像变量。 'i' 被视为模型中的新字段。

知道如何使用变量指定要更改的模型字段吗?

由于 django 模型本质上只是对象,因此模型字段只是属性。因此,您可以简单地使用 dict 来映射要为模型更新的字段值对,然后调用 setattr 来设置它们:

# store/get the model field-value pair data
fruits = {
    'a': 'orange',
    'b': 'apple',
    'c': 'banana'
}

def ExampleView(request):
    model_instance = ExampleModel.objects.last()
    # update the model fields
    for key, value in fruits.items():
        setattr(model_instance, key, value)
    model_instance.save()

我假设您也在动态获取更新值,因此您必须为此调整上面的代码,但总的来说,我认为这解决了您问题的要点。

参考资料