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()

Я предполагаю, что вы также получаете значения обновления динамически, поэтому вам придется скорректировать вышеприведенный код для этого, но в целом я думаю, что это решает основную суть вашего вопроса.

Ссылки

Вернуться на верх