gpt4 book ai didi

django - 日期验证 --> 结束日期必须大于开始日期

转载 作者:行者123 更新时间:2023-12-04 16:42:32 25 4
gpt4 key购买 nike

我需要编写一个脚本来验证结束日期是否大于开始日期。

此外,开始日期/结束日期不能早于当前日期。这需要在 Django 1.8 中编写。

最佳答案

您可以覆盖 Model.clean(..) method [Django-doc]为了这。如果您使用 ModelForm [Django-doc] , 那么它会自动调用 .clean()在模型实例上检查是否满足约束。

from django.db import models
from django.utils import timezone

class MyModel(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()

def clean(self):
super().clean()
if not (timezone.now() <= self.start <= self.end):
raise ValidationError('Invalid start and end datetime')

截至 ,您可以使用 constraints [Django-doc]Meta :
# since Django-2.2

from django.db import models
from django.db.models import F, Q
from django.db.models.functions import Now

class MyModel(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()

def clean(self):
# ...
pass

class Meta:
constraints = [
models.CheckConstraint(
check=Q(start__lte=F('end'), start__gte=Now()),
name='correct_datetime'
),
]

鉴于数据库系统支持这一点,约束也将在数据库级别强制执行。

关于django - 日期验证 --> 结束日期必须大于开始日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com