create_or_update в ModelForm - PullRequest
       12

create_or_update в ModelForm

0 голосов
/ 29 апреля 2010

Я хочу иметь ModelForm, который может создать_представить экземпляр модели на основе параметров запроса.

Я пытался что-то совместить, но понимаю, что мой питон-фу недостаточно силен, а код реализации ModelForm довольно сложный.

Я нашел этот фрагмент update_or_create для работы с моделью, но я думаю, что было бы невероятно полезно, если бы он был интегрирован с ModelForm.

Я бы ожидал, что он будет вести себя так же, как ModelForm.save ():

class BetterModelForm(forms.ModelForm):
    def create_or_update(self):
        #magic
        return (instance, created, updated)

И наоборот, мне также было бы интересно услышать веские причины, почему это не очень хорошая идея.

1 Ответ

2 голосов
/ 29 апреля 2010

Это на самом деле не то, что принадлежит самой ModelForm. Модели уже делают это автоматически - если экземпляр модели имеет значение pk, он обновляется, в противном случае он вставляется. Поэтому все, что вам нужно сделать, когда вы создаете экземпляр своей формы, это передать либо существующий экземпляр модели, который будет обновлен при сохранении формы, либо пустой экземпляр (или даже просто None), и в этом случае новый экземпляр будет создано.

...