2012-02-03 12 views
8

Mój modeldjango Wprowadź poprawną datę. Błąd walidacji

class Member(models.Model): 

dob = models.DateField('dob') 

forma

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

jakiś kod widok

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 

gdy m wysłaniu formularza komunikat o błędzie przyjście jest

Enter a valid date. 

Co należy zrobić, aby rozwiązać ten problem.

Odpowiedz

9

wolę ustawić DATE_INPUT_FORMATS w settings.py i następnie zdefiniowania pola jak:

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

To więcej DRY niż ustawienie go na podstawie pola formularza.

Jeśli jest to pole tekstowe, prawie zawsze umieszczam akceptowany format (y) w polu help_text, aby użytkownik wiedział, który format jest (są) zaakceptowany.

0

The input_formats jest twoim przyjacielem.

Jeśli akceptujesz javascript, możesz sprawić, że pole będzie używać kalendarza jQuery (tj. Pola tekstowego tylko do odczytu, a kliknięcie tego wywoła kod jquery i wyświetli widżet kalendarza). Jako punkt wyjścia możesz mieć this calendar widget.

1

Nie musisz dodawać nowego pola, gdy już masz model DateField w swoim modelu.

Trzeba tylko ustawić input_formats dla tego pola:

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

Referencje: DateField i Format Localization

Powiązane problemy