2012-08-26 133 views
10

我在我的模型中使用了django DateField。没有自定义表单的Django模型字段验证

class CalWeek(models.Model): 
    start_monday = models.DateField(verbose_name="Start monday") 

我有一个自定义的验证方法是特定于我modelField:我想确认,它实际上是一个星期一。我目前没有理由在管理员中使用自定义的ModelForm - Django生成的一个很好。创建一个自定义的窗体类,所以我可以利用糖,django表单类提供似乎很多工作只是为了添加一些字段验证。我意识到我可以override the model's clean method并在那里提出ValidationError。然而,这并不理想:这些错误被认为是非现场错误,最终导致页面顶部,而不是旁边的有问题的用户输入 - 这不是理想的用户体验。

是否有一种简单的方法来验证特定的模型字段,并让您的错误消息显示在管理员的字段旁边,而无需使用自定义窗体类?

回答

14

你可以看看Django验证器。

https://docs.djangoproject.com/en/dev/ref/validators/

你会把验证前级,然后设置在该领域的验证。

def validate_monday(date): 
    if date.weekday() != 0: 
     raise ValidationError("Please select a Monday.") 

class CalWeek(models.Model): 
    start_date = models.DateField(validators=[validate_monday]) 
+0

不错!我不知道我是如何忽略这一点的。 –

+0

酷!以前没有用过,但是这很干净。发布干净的验证器! –

相关问题