当__init__方法可用时,Django自定义表单-is_valid不调用clean方法



我在Django中有以下自定义表单代码:

class JoinMeetingForm(forms.Form):
meeting_id = forms.UUIDField(help_text="Enter the UUID")
def __init__(self,user,*args,**kwargs):
self.user=user
super(JoinMeetingForm,self).__init__(*args)
def clean_meeting_id(self):
data = self.cleaned_data['meeting_id']
meeting = Meeting.objects.filter(pk=data)
querySuccess = False
if len(meeting) == 1:
if(meeting[0].joined_user==None):
querySuccess = True # ToDo
return data

首先,我调用JoinMeetingForm(request.user(,它调用init方法。然后,我调用form.is_valid((,但是,这并没有调用clean_meeting_id((方法——为什么会出现这种情况?奇怪的是,如果我注释掉init方法,is_valid((方法会调用clean_meeting_id((。提前感谢!

您没有将meeting_id数据传递到表单中,因此表单没有调用"字段验证器方法">(因为没有meeting_id的数据(

所以应该是

form = JoinMeetingForm(
request.user,
{"meeting_id": "123e4567-e89b-12d3-a456-426614174000"}
)
is_valid = form.is_valid()

最新更新