在Django中筛选可用日期

在Django中筛选可用日期,django,django-queryset,Django,Django Queryset,想象一下,一家旅馆记录着某个晚上是否有空房。此外,如果一个超过一位客人的聚会正在寻找一个房间,他们只会想要一个至少有那么多床位的房间 给定一个日期范围,我希望找到可用的房间,并且至少有客人数量的床(以及其他过滤) 如果没有有效地将AND与.filter链接,我如何才能做到这一点?(这就是它现在的工作方式——这让我的数据库非常难过。) 如果需要的话,我当然也愿意采用不同的方案来存储可用性数据 谢谢!(下面的假设类可以更好地理解问题。) 更新:忘记了我们需要每天的客房供应。此查询将返回可用日期集及其

想象一下,一家旅馆记录着某个晚上是否有空房。此外,如果一个超过一位客人的聚会正在寻找一个房间,他们只会想要一个至少有那么多床位的房间

给定一个日期范围,我希望找到可用的房间,并且至少有客人数量的床(以及其他过滤)

如果没有有效地将AND与.filter链接,我如何才能做到这一点?(这就是它现在的工作方式——这让我的数据库非常难过。)

如果需要的话,我当然也愿意采用不同的方案来存储可用性数据

谢谢!(下面的假设类可以更好地理解问题。)


更新:忘记了我们需要每天的客房供应。此查询将返回可用日期集及其房间主键

有一个包含当天可用房间列表的“日”模型如何?嗯。。。我的用例实际上稍微复杂一些。我将更新示例代码,使其更加清晰。(具体来说,我必须确定可用床位的数量…)
class Room(models.Model):
    name = models.CharField(max_length=100)

class RoomAvailability(models.Model):
    room = models.ForeignKey(Rooms)
    date = models.DateField()
    beds = models.IntegerField(default=1)
available_rooms = (Room.objects
    .filter(roomavailability__date__range=(start_date, end_date))
    .values('roomavailability__date', 'pk')
    .annotate(sum=Sum('roomavailability__beds'))
    .filter(sum__gte=min_beds))