>

종료일이 시작일보다 큰지 확인하는 스크립트를 작성해야합니다. 또한 시작 날짜/종료 날짜는 현재 날짜 이전 일 수 없습니다. Django 1.8로 작성해야합니다.

  • 답변 # 1

    Model.clean(..) 를 무시할 수 있습니다 방법 [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()
        defclean(self):
            super().clean()
            if not (timezone.now() <= self.start <= self.end):
                raise ValidationError('Invalid start and end datetime')
    
    

    django-2.2부터 constraints 를 사용할 수 있습니다 Meta 의 [Django-doc] :

    # 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'
                ),
            ]
    
    

    데이터베이스 시스템에서이를 지원하면 데이터베이스 수준에서도 제약 조건이 적용됩니다.

  • 이전 큰 헤더에서 작은 정적 헤더 (Javascript/CSS)로 부드럽게 전환하는 방법
  • 다음 c++ - std - : u8string을 utf8 문자의 c 스타일 문자열로 복사하십시오