【问题标题】:Set hourly limit on DateTimeField Django设置 DateTimeField Django 的每小时限制
【发布时间】:2022-08-14 15:31:31
【问题描述】:

模型.py:

class Event(models.Model):
    start = models.DateTimeField(default=timezone.now)
    end = models.DateTimeField()

如何设置 end_date 的硬限制?

所以如果用户想要设置任何东西5个小时从一开始系统不会让他这样做。

    标签: python django django-models


    【解决方案1】:

    您可以使用constraints 在数据库级别执行此操作

    from datetime import timedelta
    from django.db import models
    from django.db.models import CheckConstraint, Q, F
    
    class Event(models.Model):
        start = models.DateTimeField(default=timezone.now)
        end = models.DatetimeField()
    
        class Meta:
            constraints = [
                CheckConstraint(
                    check=Q(end__lte=F('start') + timedelta(hours=5)), 
                    name='check_end_datetime',
                ),
            ]
    

    运行 manage.py makemigrationsmanage.py migrate 来更改数据库。

    【讨论】:

    • 你用的是什么版本的django。这允许我在 django 3.1 上设置大于 5 小时的时间
    • 抱歉,我没说,你必须运行 makemigrations 和 migrate 才能使约束生效。我已经编辑了我的答案
    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2017-04-30
    • 2015-01-31
    • 2016-01-21
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多