2011-12-19 3 views
4

Привет Я очень новичок в Django. Я работаю над небольшим проектом, в котором я использую modelform. В поле даты я хочу выполнить выборочную проверку, т. Е. Всякий раз, когда пользователь вводит дату до сегодняшней даты, он должен отображать сообщение об ошибке рядом с полем даты. Я написал код в соответствии с документацией django, но он дает ValidationErrors для выражения raise в modelform. например ValidationError at/add_task/ [u "Пожалуйста, введите действительную дату. Либо сегодня, либо после этого."]ValidationError in Django

Пожалуйста, помогите мне, как преодолеть эту проблему. Заранее спасибо.

коды моих моделей:

from django.db import models 

class MyTask(models.Model): 

    summary=models.CharField(max_length=100) 

    description=models.CharField(max_length=500) 

    due_date=models.DateField(null=True) 

    completed_status=models.BooleanField() 

    def __unicode__(self): 
     return self.summary 

коды моего ModelForm: необходим

from django.forms import ModelForm, Textarea 

from django.forms.extras.widgets import SelectDateWidget 

from django.core.exceptions import ValidationError 

from assignment.models import MyTask 

import datetime 

class AddTaskForm(ModelForm): 

    class Meta: 

     model=MyTask 

     fields=('summary','description','due_date') 

     widgets = { 
      'description': Textarea(attrs={'cols': 50, 'rows': 10}), 
      'due_date':SelectDateWidget(), 
     } 

    def get_due_date(self): 

     diff=self.cleaned_data['due_date']-datetime.date.today() 

     if diff.days<0: 

      raise ValidationError("Please enter valid date. Either today's date or after that.") 

    else: 

      return self.cleaned_data['due_date']  

    def get_summary(self): 

      return self.cleaned_data['summary'] 

    def get_description(self): 

      return self.cleaned_data['description'] 

ответ

7

Ваш метод проверки будет называться clean_due_date. И он должен поднять forms.ValidationError, а не core.exceptions.ValidationError.

Я понятия не имею, каковы методы get_summary и get_description, они не вызываются и не делают ничего полезного.

+0

Привет, Daniel, get_summary и методы get_description просто возвращают очищенные данные в представление и ничего не делают. Спасибо, теперь это работает. –

+0

@ Daniel Roseman «он должен поднять формы. ValidationError, not core.exceptions.ValidationError« Вы можете найти в 'django/forms/__ init __. Py', что' ValidationError' - это 'core.exceptions', он просто реимпортируется' из django. core.exceptions import ValidationError' – bns

Смежные вопросы