我正在尝试过滤具有DateField
(日期)的模型以检索queryset
其日期在列表中的任何一个中的实例,DateRanges
但我正在努力找出我需要的确切逻辑。
例如,如果我有以下模型:
class Period(models.Model):
user = models.ForeignKey(User)
range = DateRangeField()
class Game(models.Model):
date = models.DateField()
并且我创建了 3 个不同的日期范围,如何获取日期在这 3 个日期范围之一的所有游戏的列表?
我知道我可以遍历范围并为此使用链式Q()
过滤器,但我需要将这一切都放在一个大的注释中,queryset
这将不得不使用子查询,这样就不起作用了。
我目前的努力是这样的:-
periods = Period.objects.filter(user__id=OuterRef('id')).values_list('range', flat=True)
games_in_periods = Game.objects.filter(date__contained_by=Subquery(periods))
但这不起作用,因为contained_by
它与一个日期范围进行比较,而是一个queryset
日期范围。
感觉就像我很接近,但我一定错过了一些愚蠢的事情。
有任何想法吗?