django输入有效日期.验证错误

XMe*_*Men 9 django

我的模特

 class Member(models.Model):

dob = models.DateField('dob')
Run Code Online (Sandbox Code Playgroud)

形成

class MemberForm(ModelForm):
  dob = forms.DateField(required=False, input_formats='%Y-%m-%d')
  class Meta:
    model = Member
    exclude = ('profile',)   
Run Code Online (Sandbox Code Playgroud)

一些视图代码

if request.method == 'POST': # If the form has been submitted...
        signup_form = SignupForm(request.POST) # A form bound to the POST data
        # Create a formset from the submitted data
        member_formset = MemberFormSet(request.POST, request.FILES)
        # import pdb; pdb.set_trace()
        if signup_form.is_valid() and member_formset.is_valid():
          print 'in valid'
          signup = signup_form.save(request.POST)
          for form in member_formset.forms:
            member = form.save(commit=False)
            member.profile = signup
            # import pdb; pdb.set_trace()
            # print member.objects.all()
            member.save()
          return redirect("/main") # Redirect to a 'success' page
Run Code Online (Sandbox Code Playgroud)

当提交表单时,会出现错误消息

Enter a valid date.
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题.

Rae*_*eri 22

input_formats 需要成为一个列表,请参阅

例:

['%Y-%m-%d',      # '2006-10-25'
'%m/%d/%Y',       # '10/25/2006'
'%m/%d/%y']       # '10/25/06'
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.DateField


j_s*_*syk 12

我更喜欢 在settings.py中设置**DATE_INPUT_FORMATS,然后定义如下字段:

dob = forms.DateField(input_formats=settings.DATE_INPUT_FORMATS)
Run Code Online (Sandbox Code Playgroud)

这比在每个表单字段基础上设置它更干.

如果它是文本字段输入,我几乎总是将接受的格式放在字段中,help_text以便用户可以知道接受的格式.