Django                
            RangeFields - PostgreSQL 고유의 필드 그룹
        
        
            
    수색…
통사론
- from django.contrib.postgres.fields import * RangeField
- IntegerRangeField (** 옵션)
- BigIntegerRangeField (** options)
- FloatRangeField (** 옵션)
- DateTimeRangeField (** 옵션)
- DateRangeField (** 옵션)
모델에 숫자 범위 필드 포함
 파이썬에는 세 가지 종류의 숫자 RangeField 있습니다. IntegerField , BigIntegerField 및 FloatField 입니다. psycopg2 NumericRange 로 변환하지만 입력을 원시 Python 튜플로 허용합니다. 하한이 포함되고 상한이 제외됩니다. 
class Book(models.Model):
    name = CharField(max_length=200)
    ratings_range = IntegerRange()
RangeField 설정
-  INSTALLED_APPS에'django.contrib.postgres'를 추가하십시오.
-  psycopg2설치
숫자 범위 필드가있는 모델 만들기
 NumericRange 대신 Python 튜플로 값을 입력하는 것이 더 쉽고 쉽습니다. 
Book.objects.create(name='Pro Git', ratings_range=(5, 5))
 NumericRange 를 NumericRange 다른 방법 : 
Book.objects.create(name='Pro Git', ratings_range=NumericRange(5, 5))
포함 사용
이 쿼리는 등급이 3 미만인 모든 도서를 선택합니다.
bad_books = Books.objects.filter(ratings_range__contains=(1, 3))
contained_by 사용
이 쿼리는 평점이 0보다 크고 6보다 작은 모든 도서를 가져옵니다.
all_books = Book.objects.filter(ratings_range_contained_by=(0, 6))
오버랩 사용
이 쿼리는 모든 중복 약속을 6에서 10으로 가져옵니다.
Appointment.objects.filter(time_span__overlap=(6, 10))
없음을 사용하여 상한 없음을 나타냅니다.
이 쿼리는 등급이 4보다 크거나 같은 모든 책을 선택합니다.
maybe_good_books = Books.objects.filter(ratings_range__contains=(4, None))
범위 작업
from datetime import timedelta
from django.utils import timezone
from psycopg2.extras import DateTimeTZRange
# To create a "period" object we will use psycopg2's DateTimeTZRange
# which takes the two datetime bounds as arguments
period_start = timezone.now()
period_end = period_start + timedelta(days=1, hours=3)
period = DateTimeTZRange(start, end)
# Say Event.timeslot is a DateTimeRangeField
# Events which cover at least the whole selected period,
Event.objects.filter(timeslot__contains=period)
# Events which start and end within selected period,
Event.objects.filter(timeslot__contained_by=period)
# Events which, at least partially, take place during the selected period.
Event.objects.filter(timeslot__overlap=period)
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow