【问题标题】:django models.DateField prevent pastdjango models.DateField 防止过去
【发布时间】:2018-04-24 13:11:54
【问题描述】:

我正在寻找阻止用户在 django 管理页面中输入过去日期的方法。像这样的:

Django: How to set DateField to only accept Today & Future dates

我的模型如下所示:

class MyModel(models.Model):
    date = models.DateField(null=True, blank=True, default=None)

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    执行此操作的正确方法是validator。例如:

    def validate_date(date):
        if date < timezone.now().date():
            raise ValidationError("Date cannot be in the past")
    

    该函数将确定特定输入值是否可接受,然后您可以将验证器添加到模型字段,如下所示:

    date = models.DateField(null=True, blank=True, default=None, validators=[validate_date])
    

    【讨论】:

    • 根据the doc,验证者不应该提出ValidationError吗?
    【解决方案2】:

    您可以在 forms.py 文件中进行验证,以确保输入的日期不早于当前日期。因此,即使有人尝试输入较早的日期,用户也会收到错误消息。希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2015-09-25
      • 2014-11-30
      相关资源
      最近更新 更多