想象一下宿舍在任何一个晚上都能跟踪房间是否可用。此外,如果超过1位客人的一方正在寻找一个房间,他们只需要一间至少有这么多床位的房间。
考虑到日期范围,我想找到可用的房间,并且至少有床位数,因为有客人(以及其他过滤)。
如果没有与.filters有效地链接AND,我该如何解决这个问题? (现在它的工作原理 - 让我的数据库非常难过。)
如果需要,我当然愿意采用不同的方案来存储可用性数据。
谢谢! (下面的假设类可以更好地理解问题。)
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)
答案 0 :(得分: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))
更新:忘了我们每天都需要房间。此查询将返回可用日期集和其房间PK。