Как я могу обновить модель и сделать что-то с этим или другим объектом? - PullRequest
0 голосов
/ 20 ноября 2018

В моей модели 7 полей, но я хочу обновить только поле. Я использую CBC (generic.UpdateView) с моделью и form_class. Мои формы работают нормально, но, Я хочу делать вещи в зависимости от значения для этого поля.

Я не знаю, какой метод переопределить.

ModelA:
atribute_a
atribute_b
atribute_c

Мне нужно изменить только atribute_a, но atribute_b - это dateTime, и я хочу обновить atribute_b с timezone.now() при обновлении atribute_a, и после этого я хочу обновить другой объект с ForeignKey с atribute_c например.

в основном в UpdateView, я хочу это: В некотором методе (сохранить, отправить, отправить или другой)

atribute_b = timezone.now()
if atribute_a == 'abc':
    ModelB.objects.filter(atribute_c=atribute_c).update(atribute_c = atribute_c+1)

1 Ответ

0 голосов
/ 20 ноября 2018

Я использовал def save(self, commit=True): в своем forms.py, а в своем view.py я использовал generic.UpdateView с model и form_class.

кодом из моих форм.

class MyForm(ModelForm):
    class Meta:
        fields = ['atribute_a']
        exclude = ['atribute_b', 'atribute_c']

    def save(self, commit=True):
        instance = super(MyForm, self).save(commit=False)
        instance.atribute_b = timezone.now()
        # do something with FK
...