我正在研究预订系统,但找不到选择免费日期的好方法。这是我的模型:
class rental_group(models.Model):
group_title = models.CharField(max_length = 30)
description = models.TextField()
class rental_units(models.Model):
group = models.ForeignKey(rental_group)
number = models.CharField(max_length = 6)
class Reservations(models.Model):
#name = models.ForeignKey(customer)
rental_unit = models.ForeignKey(rental_units)
start_date = models.DateField()
end_date = models.DateField()
我尝试使用此查询选择可用房间:
rental_units.objects.filter(group__rental_group = 'Bungalow').exclude(Q(Reservations__start_date__lt = arrival)&Q(Reservations__end_date__gt = arrival)|Q(Reservations__start_date__lt = departure)&Q(Reservations__end_date__gt = departure))
当只有一个预订时,这非常有效。当同一号码有更多预订时,事情就会出错。例如,当我对 120 号有两个预订时,当一切都可用时,此查询将返回 120 两次。如果新预订在旧预订日期之一之间,则返回 120 一次(应为零“不可用”)
这可以通过查询来实现吗?或者我应该遍历预订,并从列表中删除预订的房子(如果有很多预订,这可能需要很多时间)