我在orm中转置sql请求时遇到问题。
好吧,这是我的SQL请求:
SELECT DISTINCT accommodation.id from accommodation
LEFT JOIN product on product.accommodation_id=accommodation.id
LEFT JOIN date on date.product_id = product.id
WHERE date.begin> '2010-08-13';
因此,我希望所有住宿期间都没有杜布隆。
我的模型是这样的:
class Accommodation(models.Model):
...
class Product(models.Model):
...
accommodation = models.ForeignKey(accommodation)
class Date(models.Model):
...
begin = models.DateField()
product = models.ForeignKey(Product)
所以目前我这样做:
dates = Date.objects.filter(begin__gte=values['start_day'],
...)
...
accommodations_dict = {}
for date in dates : accommodations_dict[date.product.accommodation.slug] = True
accommodations = Accommodation.objects.filter(slug__in=accommodations_dict.keys())
好吧,它有效,但是很慢,我有很多约会。
所以我想我可以通过sql获得这些适应,但是我不知道怎么办?
如果你有一个主意,
谢谢。
最佳答案
这应该做您想要的:
Accommodation.objects.filter(product__date__begin__gte=values['start_day'])