Django изменение значения поля databe с помощью переменной в представлении
Есть ли способ обновить вручную значение определенного поля в экземпляре модели с помощью переменных?
Например.
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' из цикла не ведет себя как переменная. '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()
Я предполагаю, что вы также получаете значения обновления динамически, поэтому вам придется скорректировать вышеприведенный код для этого, но в целом я думаю, что это решает основную суть вашего вопроса.
Ссылки