我有一个模型:
class MyModel(models.Model):
user = models.ForeignKey(User)
week = models.DateField()
我的应用是围绕“星期六结束的星期”构建的,所以我希望 week 字段只接受星期六。
我希望这种验证发生在 Model 而不是 Form 中,因为我将在没有 Form< 的情况下输入数据 在某些情况下。
我知道覆盖模型的 save() 方法以添加 full_clean() 可能是可行的方法,但我对最佳实践感到困惑在这里。
什么是最干的方式?
请您参考如下方法:
我会提供一个验证器,特别是如果您在没有表单的情况下输入数据时需要一个干净的数据库。
如果输入是 datetime.date,您可以只使用 mydate.weekday() 来获取它的星期几。星期六应该是“5”。
类似于:
def validate_saturday(value):
if not value.week.weekday == 5:
raise ValidationError("Date should be a Saturday.")
替代方法可能是在模型中指定周数而不是 DateField。
