Джанго: обновление с условиями - PullRequest
0 голосов
/ 20 марта 2019

Я хочу обновить объект через форму в Django, но перед выполнением form.save() в представлении я хочу выполнить некоторые условия с данными.

Например:

ire = get_object_or_404(Ire, id_IRE=pk)
if request.method == 'POST':
    form = IreForm(request.POST or None, instance=ire)
    if form.is_valid():
        if ire.get_att1()==form.cleaned_data.get('att1') and ire.get_att2()==form.cleaned_data.get('att2'):
           form.save(update_fields=['type']) #just update the field type
        else:
           form.save() #create a new object

Когда я делаю это, на мой взгляд, работает только первое условие, но когда я изменяю att1 или att2 в форме, оно не делает никаких изменений.

Пожалуйста, помогите мне, как я могу выполнить условия перед сохранением !!!

1 Ответ

0 голосов
/ 20 марта 2019

спасибо, я нашел решение, в котором хранятся значения объекта, который я хочу обновить, перед тем как выполнить операцию обновления:

ire = get_object_or_404(Ire, id_IRE=pk)
**ire_att1=ire.get_att1()**
**ire_att2=ire.get_att2()**
**ire_type=ire.get_type()**

if request.method == 'POST':
  form = IreForm(request.POST or None, instance=ire)
  if form.is_valid():
    if **ire_att1**==form.cleaned_data.get('att1') and **ire_att2**==form.cleaned_data.get('att2'):
          Ire.objects.filter(id_IRE=pk).update(type=form.cleaned_data.get('type'))
    else:
          form.save()

вот как я решаю проблему, потому что я обнаружил, что после вызоваВ модели формы значения объекта изменяются одновременно с тем, что я ввожу, еще до того, как я вызову form.save

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...