15

我在我的模型中使用 django DateField。

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

我有一个特定于我的 modelField 的自定义验证方法:我想确保它实际上是星期一。我目前没有理由在管理员中使用自定义 ModelForm —— Django 生成的那个很好。创建一个自定义表单类,以便我可以利用 django Form 类提供的clean_start_monday(self)1 个糖,这似乎需要做很多工作来添加一些字段验证。我意识到我可以覆盖模型的 clean 方法并在那里提出一个ValidationError。然而,这并不理想:这些错误被归为非字段错误并最终出现在页面顶部,而不是出现在有问题的用户输入旁边——这不是理想的用户体验。

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

4

1 回答 1

21

您可以查看 Django Validators。

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])
于 2012-08-26T05:59:13.637 回答