import datetime
from psycopg2.extras import DateTimeTZRange
from django.db import models
from django.contrib.postgres.fields import ArrayField, DateTimeRangeField
class MyModel(models.Model):
myfield = ArrayField(DateTimeRangeField())
d1 = datetime.
datetime.now()
d2 = datetime.
datetime.now() + datetime.timedelta(days=1)
d3 = datetime.
datetime.now()
+ datetime.timedelta(days=5)
d4 = datetime.
datetime.now()
+ datetime.timedelta(days=7)
MyModel.objects.create(
myfield=[
DateTimeTZRange(d1, d2),
DateTimeTZRange(
d3
,
d4
)
]
)
search_from = datetime.datetime.now()
search_to = datetime.datetime.now() + datetime.timedelta(hours=8)
MyModel.objects.filter(myfield__0__overlap=DateTimeTZRange(search_from, search_to))
<QuerySet [<MyModel: MyModel>]>
MyModel.objects.filter(myfield__1__overlap=DateTimeTZRange(search_from, search_to))
<QuerySet []>
MyModel.objects.filter(myfield__
overlap
__overlap=DateTimeTZRange(search_from, search_to))
...
FieldError: Unsupported lookup 'overlap' for ArrayField or join on the field not permitted.
MyModel.objects.filter(myfield__0_100000
__overlap=DateTimeTZRange(search_from, search_to))
<QuerySet []>