我想验证用户的年龄(birth_date
)是否为18+,这是我目前的代码,但它不工作:
...
def min_date():
return (date.today() - timedelta(days=6570))
class User(BaseModel, RemovabledModel, AbstractUser):
birth_date = models.DateField(
verbose_name=_('birth date'),
help_text=_('Birth date'),
null=True,
blank=True,
validators=[
MinValueValidator(
limit_value=min_date(),
message=("User must be 18 or older")
),
]
)
字符串
这可以运行并且是功能性的,但是我仍然可以将用户的年龄设置为今天的日期,而不会像其他验证器那样抛出任何错误消息。
编辑:如果它是相关的,这是相关的验证器:
def min_date():
return (date.today() - timedelta(days=6570))
class SignUpSerializer(serializers.Serializer):
birth_date = serializers.DateField(
write_only=True,
required=True,
validators=[
MinValueValidator(
limit_value=min_date(),
message=("User must be 18 or older") ),
]
)
型
1条答案
按热度按时间yrwegjxp1#
您可以如下修复模型上的验证(这也意味着您可以从序列化程序中忽略自定义字段):
字符串
相关文件
自定义用户模型
当前在模型上的设置方式:
在User模型中的date字段上;您正在验证器中调用min_date()函数,假设您要迁移。
你今天就出发吧。
然后第二天;你就回到了开发阶段你移民,移民;并且应该显示未做任何更改,但是日期字段发生了更改。
min_date函数中的日期将递增。
在这种情况下,迁移并不知道您正在调用一个函数;它只是 * 看到 * 该值。