Django - перегрузка post на UpdateView, чтобы он автоматически заполнял некоторые поля

Итак, я имею следующее представление:

class ProfileView(generic.UpdateView):
    model = User
    fields = [....]
    template_name_suffix = '_update_form'
    success_url = reverse_lazy('home')

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.is_active = False
        return super().post(request, *args, **kwargs)

когда пользователь сохраняет свои данные при обновлении, я хочу, чтобы некоторые поля заполнялись автоматически, например is_active = False.

Я использовал подход, описанный выше, но мои вставленные поля не изменяются.

Почему и как я могу получить желаемый результат?

Спасибо.

Здесь будет два объекта: тот, который обернут в форму, и тот, который вы используете в методе .post, а сохраняете тот, который в форме.

Вы можете переопределить метод .form_valid(…) [Django-doc]:

class ProfileView(generic.UpdateView):
    model = User
    fields =  # …
    template_name_suffix = '_update_form'
    success_url = reverse_lazy('home')

    def form_valid(self, form):
        form.instance.is_active = False
        return super().form_valid(form)
Вернуться на верх