Django: Как обновлять по одному полю за раз в форме?

#django #django-views #django-forms

Вопрос:

Я пытался найти решение в Интернете, но не нашел ни одного, которое работало бы, я надеялся, что вы, ребята, могли бы помочь мне с этим, так как я был в этой ситуации уже два дня. Моя проблема в том, что всякий раз, когда я пытался обновить одно из полей моего пользователя, появляется ошибка, в которой говорится, что необходимо обновить и другие поля. Я попытался включить blank=True одно из полей моей пользовательской модели, чтобы требуемое значение стало Ложным, но когда я нажимаю обновить на передней панели, те поля, которые я не изменил, становятся пустыми. Все, что я хочу, — это позволить пользователю обновлять одно поле, если он или она тоже этого хочет, без необходимости обновлять другие поля.. так же, как и на сайте администратора, вы можете свободно обновлять одно поле пользователя, и это не выдаст вам ошибку. Может ли кто-нибудь помочь мне с этим?

таково мое мнение

 class ProfileUpdateView(LoginRequiredMixin,UpdateView):  model = User  form_class = UserUpdateForm  template_name = 'accounts/profile_update.html'  def get_object(self, *args, **kwargs):  return User.objects.get(username=self.kwargs.get('username'))  def get_success_url(self):  self.object = self.get_object()  return reverse_lazy('accounts:profile_update', self.request.user.username)  

это моя форма

 class UserUpdateForm(forms.ModelForm):  class Meta:  model = User  fields = ['first_name', 'last_name', 'email', 'phone_number', 'current_address', 'image']  

Я попробовал это

Мое мнение

 class ProfileUpdateView(LoginRequiredMixin,UpdateView):  model = User  form_class = UserUpdateForm  template_name = 'accounts/profile_update.html'  def get_object(self, *args, **kwargs):  return User.objects.get(username=self.kwargs.get('username'))  def get_success_url(self):  self.object = self.get_object()  return reverse_lazy('accounts:profile_update', self.request.user.username)  #I added this def get_form_kwargs(self):  form = super().get_form_kwargs()  form['user'] = self.request.user  return form  

Моя форма

 class UserUpdateForm(forms.ModelForm):  #I added this  def __init__(self, user, *args, **kwargs):  self.user = user  super(UserUpdateForm, self).__init__(*args, **kwargs)   self.fields['first_name'].initial = user.first_name  self.fields['last_name'].initial = user.last_name  self.fields['email'].initial = user.email  self.fields['phone_number'].initial = user.phone_number  self.fields['current_address'].initial = user.current_address  self.fields['image'].initial = user.image   class Meta:  model = User  fields = ['first_name', 'last_name', 'email', 'phone_number', 'current_address', 'image']  

I also tried get_initial on my updateview

 def get_initial(self):  initial = super().get_initial()   initial['first_name'] = self.request.user.first_name  initial['last_name'] = self.request.user.last_name  initial['email'] = self.request.user.email  initial['phone_number'] = self.request.user.phone_number  initial['current_address'] = self.request.user.current_address  initial['image'] = self.request.user.image   return initial