gpt4 book ai didi

django - 查询新的 Django/Postgres DateRangeField

转载 作者:行者123 更新时间:2023-11-29 12:57:59 26 4
gpt4 key购买 nike

假设我想要一个这样的模型:

from django.db import models
from django.contrib.postgres.fields import DateRangeField

class QueryRange(models.Model):
name = models.CharField('Name', max_length=50)
rsv = DateRangeField()

然后在 shell 中我创建了一些像这样的对象:

obj1 = QueryRange.objects.create(name='John', rsv=('2016-06-01', '2016-06-10'))
obj2 = QueryRange.objects.create(name='Peter', rsv=('2016-07-05', '2016-07-10'))
obj3 = QueryRange.objects.create(name='Chris', rsv=('2016-07-12', '2016-07-15'))

我如何通过询问以下问题来查询数据库:请检查日期,即“2016-07-08”是否已被占用

这样的东西是行不通的:

from psycopg2.extras import DateRange

rng = DateRange('2016-07-08')
QueryRange.objects.filter(rsv__contains=rng)

我已经使用两个单独的 date 字段(from_dateuntil_date)实现了相同的场景并且效果很好(当然)。我很好奇如何使用 DateRangefield 使自己受益。

为所有 Djangonauts 干杯!

最佳答案

您的答案非常接近。当您查找单个日期是否存在时,请直接使用日期对象:

from datetime import date
QueryRange.objects.filter(rsv__contains=date.today())

如果您使用日期范围进行查询,您可能希望查看是否有任何重叠:

rng = DateRange('2016-07-08', '2016-07-20')
QueryRange.objects.filter(rsv__overlap=rng)

测试了这两个示例以确保它们有效。

关于django - 查询新的 Django/Postgres DateRangeField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com