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)