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()
我假设您也在动态获取更新值,因此您必须为此调整上面的代码,但总的来说,我认为这解决了您问题的要点。
参考资料
有什么方法可以使用变量更新模型实例中特定字段的手动值吗?
例如
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()
我假设您也在动态获取更新值,因此您必须为此调整上面的代码,但总的来说,我认为这解决了您问题的要点。
参考资料