我在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()