没有预订的DRF api过滤室

时间:2017-06-18 07:40:02

标签: django django-models django-rest-framework

我有这种情况。用户将在日期范围内预订房间(例如,从2017-06-08至2017-07-09)用户也可以选择私人房间或共用房间。事情是共享房间应该在日期范围内,以便用户可以选择与某人共用的房间。现在我正在使用此

进行queryset功能
class Room(models.Model):
    number = models.CharField(max_length=8, null=True)
    category = models.ForeignKey(RoomCategory, related_name="rooms")
    beds = models.PositiveIntegerField(null=True)
    description = models.TextField(blank=True)
    size = models.CharField(max_length=2, blank=True)
    bed = models.PositiveIntegerField(null=True)
    toilet = models.BooleanField(default=False)
    guest_section = models.BooleanField(default=False)
    building_type = models.CharField(max_length=50, null=True)
    tv = models.BooleanField(default=False)
    wifi = models.BooleanField(default=False)
    shower = models.BooleanField(default=False)
    heat = models.BooleanField(default=False)
    fridge = models.BooleanField(default=False)
    microwave = models.BooleanField(default=False)
    wardrobe = models.BooleanField(default=False)
    sofa = models.BooleanField(default=False)
    towel = models.BooleanField(default=False)
    liquid_soap = models.BooleanField(default=False)
    socket = models.BooleanField(default=False)
    sun_side_window = models.BooleanField(default=False)
    block = models.BooleanField(default=False)

    def __unicode__(self):
        return self.number



class Reservation(models.Model):
    created_at = models.DateTimeField(auto_now_add=True, editable=False)
    transport_type = models.CharField(max_length=8, blank=True)
    start_date = models.DateField(null=True)
    end_date = models.DateField(null=True)
    total_days = models.PositiveIntegerField(null=True, blank=True)
    arrival_date = models.DateField(null=True, blank=True)
    customer_count = models.PositiveIntegerField(null=True)
    user = models.ForeignKey(User, related_name="zahialagch")
    service = models.ForeignKey(Service, related_name="reservation_services", null=True, blank=True, editable=False)
    room = models.ForeignKey(Room, related_name="reservations")
    bus_seat_departure = models.ForeignKey(BusSeat, related_name="reservation_bus_seat_dep", null=True, blank=True)
    bus_seat_arrival = models.ForeignKey(BusSeat, related_name="reservations_bus_seat_arr", null=True, blank=True)
    total_payment = models.PositiveIntegerField(null=True, blank=True)
    total_paid = models.PositiveIntegerField(null=True, blank=True)
    reservation_group = models.ForeignKey(ReservationGroup, related_name="reservation_groups", null=True)
    # reservation_serial = models.CharField(max_length=10, default=zerofill, editable=False, verbose_name=u"Захиалгын дугаар")

    def __unicode__(self):
        return "%s %s" % (self.created_at, self.user.username)

queryset = Room.objects.filter(reservations__start_date__range=['2017-06-01', '2017-09-09]) 这只返回有预订的房间。如何过滤没有预约的房间(可以预订)?

更新

我做的是在线预订房间。在某些确定的时间内,用户将保留房间。在此期间,房间不得保留。所以我想我的查询方法或方法是对还是错?,这里需要一些经验

1 个答案:

答案 0 :(得分:0)

queryset = Room.objects.filter(reservations__start_date__isnull=True)