1

私は次のモデルを持っています:

class House(models.Model): 
   Name = models.CharField(max_length=200, unique=True) 
   Reference = models.CharField(max_length=50, unique=True)

class Booking(models.Model): 
   House = models.ForeignKey(House, related_name='booking')
   InitialDate = models.DateField()
   FinalDate= models.DateField()

ここで、範囲の日付 (例: 2013-07-21 から 2013-07-30) のすべての AVAILABLE 家をフィルタリングするクエリを実行したいので、これら 2 つの間で開始および終了する予約のあるすべての家を除外する必要があります。日付。このクエリは生の SQL で実行できますが、django 構文では実行できません。

誰でも助けてもらえますか?

どうもありがとう!

4

4 に答える 4

0

あなたが話している期間が と の間であると仮定すると、startdateこれenddateは機能しますか?

booked = set([x.House.Reference for x in \
   Booking.objects.filter(InitialDate__lte=enddate).filter(FinalDate__gte=startdate)])
available = House.objects.exclude(Reference__in=booked)
于 2013-07-23T10:06:20.040 に答える
0

Django によって作成された逆リレーションのおかげで、直接フィルタリングすることが可能です:

bookedHouses = House.objects.filter(booking__InitialDate__lte=enddate)\ .filter(booking__FinalDate__gte=startdate)

于 2013-07-23T10:10:06.523 に答える