-1
我的模型形式:更新形式不行
class MemberForm(ModelForm):
birth_date = forms.DateField(widget=forms.widgets.DateInput(format="%m/%d/%Y"))
class Meta:
model = Person
exclude =('user',)
def clean(self):
user = get_user(self.request)
name = self.cleaned_data.get('name')
birth_date = self.cleaned_data.get('birth_date')
if Person.objects.filter(user=user).exists():
self.add_error('name', "You already submitted data")
elif Person.objects.filter(name=name, birth_date=birth_date).exists():
self.add_error('name', "Person with this Name and Birth date already exists.")
return self.cleaned_data
def save(self, commit=True):
person = super().save(commit=False)
if not person.pk:
person.user = get_user(self.request)
if commit:
person.save()
self.save_m2m()
return person
我的看法:
class PersonCreate(CreateView):
template_name = 'member/person_form.html'
model = Person
success_url = '/person/'
form_class = MemberForm
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.request = self.request
return form
class PersonUpdate(UpdateView):
template_name = 'member/person_form.html'
model = Person
success_url = '/person/'
form_class = MemberForm
我MemberForm工作得很好,當我創建了一個人。當用戶不唯一併且用戶名和出生日期並不唯一時,它也會在表單中給出驗證錯誤。但是,當我嘗試更新保存的表單提示錯誤,並說:「‘MemberForm’對象有沒有屬性‘請求’」
如果我使用
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.request = self.request
return form
中的UpdateView它提出了我喜歡的自定義驗證錯誤的CreateForm。由於同一個人已經在數據庫中。任何人都可以建議我如何修復Updateform,以便正確更新我現有的數據。
感謝您的答覆。我解決了它,如果self.instance.id:塊在我的乾淨的方法。我會很快發佈我的工作代碼。 –