在一周的特定日期在模型级别验证Django DateField的最佳实践是什么?
问题内容:
我有一个模型:
class MyModel(models.Model):
user = models.ForeignKey(User)
week = models.DateField()
我的应用是围绕“以周六结束的周”构建的,因此我希望该week
字段仅接受周六的日期。
我希望此验证发生在中,Model
而不是在中进行Form
,因为Form
在某些情况下,我将不需要输入数据。
我知道重写模型的save()
方法来添加afull_clean()
可能是可行的方法,但是我对这里的最佳实践感到困惑。
最干的方法是什么?
问题答案:
我会提供一个验证器,尤其是当您输入不带表单的数据时需要一个干净的数据库时。
如果输入为datetime.date
,则可以使用mydate.weekday()
获取星期几。星期六应该为“ 5”。
就像是:
def validate_saturday(value):
if not value.week.weekday == 5:
raise ValidationError("Date should be a Saturday.")
另一种选择是在模型中指定星期数,而不是DateField。