Django                
            RangeFields - группа полей PostgreSQL
        
        
            
    Поиск…
Синтаксис
- from django.contrib.postgres.fields import * RangeField
- IntegerRangeField (** опция)
- BigIntegerRangeField (** опция)
- FloatRangeField (** опция)
- DateTimeRangeField (** опция)
- DateRangeField (** опция)
Включая поля числовой области в вашей модели
 В Python существует три типа числового RangeField s. IntegerField , BigIntegerField и FloatField . Они преобразуются в psycopg2 NumericRange s, но принимают входные данные как собственные кортежи Python. Нижняя граница включена и верхняя граница исключена. 
class Book(models.Model):
    name = CharField(max_length=200)
    ratings_range = IntegerRange()
Настройка для RangeField
-  добавьте 'django.contrib.postgres'к вашемуINSTALLED_APPS
-  установить psycopg2
Создание моделей с полями числового диапазона
 Проще и проще вводить значения в виде кортежа Python вместо NumericRange . 
Book.objects.create(name='Pro Git', ratings_range=(5, 5))
 Альтернативный метод с NumericRange : 
Book.objects.create(name='Pro Git', ratings_range=NumericRange(5, 5))
Использование содержит
Этот запрос выбирает все книги с любой оценкой менее трех.
bad_books = Books.objects.filter(ratings_range__contains=(1, 3))
Использование contains_by
Этот запрос получает все книги с рейтингами, большими или равными нулю и менее шести.
all_books = Book.objects.filter(ratings_range_contained_by=(0, 6))
Использование перекрытия
Этот запрос получает все перекрывающиеся встречи от шести до десяти.
Appointment.objects.filter(time_span__overlap=(6, 10))
Использование None для обозначения верхней границы
Этот запрос выбирает все книги с любым рейтингом, большим или равным четырем.
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