Джанго Орм и 3 отношения - PullRequest
       1

Джанго Орм и 3 отношения

1 голос
/ 13 августа 2010

У меня проблема с транспонированием моего sql-запроса в orm.

Что ж, это мой 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, но я не знаю как?

если у вас есть идея, спасибо.

1 Ответ

3 голосов
/ 13 августа 2010

Это должно делать то, что вы хотите:

 Accommodation.objects.filter(product__date__begin__gte=values['start_day'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...