Установка часового лимита для поля DateTimeField Django

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

Как установить жесткий предел для установки конечной_даты?

Таким образом, если пользователь хочет установить что-либо более 5 часов от начала работы, система не позволит ему это сделать

Вы можете сделать это на уровне базы данных, используя 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',
            ),
        ]
Вернуться на верх