我是django的新手,我正在尝试约束一个django模型字段,以便将小于25年的年龄显示为错误(使用日期字段)。所以,我有以下模型:
dob = models.DateField(blank=False, )
我想知道如何在django模型中应用上述约束。 感谢。
答案 0 :(得分:1)
我遇到了同样的问题,这是我的自定义字段验证程序的解决方案,用于检查最小年龄值:
from django.utils.deconstruct import deconstructible
from django.utils.translation import ugettext_lazy as _
from django.core.validators import BaseValidator
from datetime import date
def calculate_age(born):
today = date.today()
return today.year - born.year - \
((today.month, today.day) < (born.month, born.day))
@deconstructible
class MinAgeValidator(BaseValidator):
compare = lambda self, a, b: calculate_age(a) < b
message = _("Age must be at least %(limit_value)d.")
code = 'min_age'
calculate_age片段来自this post。
用法:
class MyModel(models.Model):
date_of_birth = models.DateField(validators=[MinAgeValidator(18)])
答案 1 :(得分:0)