2010-08-13 64 views
1

我有一個問題,轉置我的SQL請求在orm中。django orm和3的關係

好吧,這是我的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的住宿,但我不知道如何?

如果你有一個想法, 謝謝。

回答

3

這應該做你想做的事:

Accommodation.objects.filter(product__date__begin__gte=values['start_day'])