复杂的django查询,获取foreignkey_set不包含满足限制的对象的对象



我有一个模型,foo和一个模型barbarfoo有一个外键,还有一个days字段,它是postgresql DateRangeField

class Foo(models.Model):
baz = models.CharField()
class bar(models.Model):
foo = models.ForeignKey(Foo, on_delete=models.CASCADE)
days = DateRangeField()

我需要执行一个查询,给定一个日期(day)和一个baz:获取所有满足baz=baz的Foo对象,并且没有具有满足days.lower < days < days.upper的关联bar对象(或者换句话说,在其days变量的范围内没有day)。

我已经研究过Q查询,但到目前为止,我找到的唯一方法是获得所有满足baz=bazFoo对象,然后使用python来完成其余部分(这在DB查询方面显然效率低下)。

我不完全理解你的问题,但似乎你应该简单地做:

Foo.objects.filter(baz=baz).exclude(bar__days__contains=day)

您可以从psycopg2.extras函数中尝试DateRange。这里有一个例子,链接

最新更新