2012-02-03 29 views
8

Mô hình của tôidjango Nhập ngày hợp lệ. xác nhận lỗi

class Member(models.Model): 

dob = models.DateField('dob') 

dạng

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

một số mã xem

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 

khi m nộp mẫu đơn được thông báo lỗi tới là

Enter a valid date. 

Tôi nên làm gì để giải quyết việc xác thực này.

Trả lời

9

Tôi thích thiết DATE_INPUT_FORMATS trong settings.py và sau đó xác định lĩnh vực này như:

dob = forms.DateField(input_formats=settings.DATE_INPUT_FORMATS) 

Điều này có nhiều DRY hơn là đặt nó trên cơ sở cho mỗi trường mẫu.

Nếu đó là đầu vào trường văn bản, tôi hầu như luôn đặt (các) định dạng được chấp nhận trong trường help_text của trường để người dùng có thể biết (các) định dạng nào được chấp nhận.

0

input_formats là bạn của bạn.

Nếu bạn chấp nhận javascript, bạn có thể sử dụng trường như lịch jQuery (ví dụ: trường văn bản chỉ đọc và nhấp vào trường đó sẽ gọi mã jquery và bật tiện ích con lịch). Bạn có thể có this calendar widget làm điểm bắt đầu.

1

Bạn không cần thêm trường mới khi đã có DateField trong Mẫu của mình.

Bạn chỉ cần thiết lập các input_formats cho lĩnh vực này:

self.fields[ 'dob' ].input_formats = [ '%Y-%m-%d' ] 

Tài liệu tham khảo: DateFieldFormat Localization

Các vấn đề liên quan