Django: ограничить набор запросов условием в последнем экземпляре связанного набора - PullRequest
0 голосов
/ 07 февраля 2010

У меня есть иерархия моделей, состоящая из четырех уровней, все по разным веским причинам, но объяснение которых выходит за рамки этого вопроса, я полагаю.
Итак, здесь речь идет о псевдо-питоне:

class Base(models.Model):
    ...

class Top(models.Model):
    base = FK(Base)

class Middle(models.Model):
    top = FK(Top)
    created_at = DateTime(...)
    flag = BooleanField(...)

class Bottom(models.Model):
    middle = FK(Middle)
    stored_at = DateTime(...)
    title = CharField(...)

Учитывая заголовок, как мне эффективно найти все экземпляры Base, для которых этот заголовок встречается только в последнем (stored_at) нижнем экземпляре самого последнего (created_at) среднего экземпляра, для которого flag установлено в Правда?

Я не смог найти способ использования ORM, и, как я его видел, .latest() мне не подходит для модели, к которой я хочу обратиться. То же самое касается любых удобных методов на базовой модели. Поскольку я не эксперт по SQL, я бы хотел использовать ORM, а также максимально избегать денормализации.

Спасибо!

1 Ответ

0 голосов
/ 04 июля 2010

Так что, очевидно, не вдаваясь в (некоторые очень громоздкие) SQL и не находя альтернативного решения, я почувствовал, что вынужден прибегнуть к денормализованным полям в модели Base, столько же, сколько требуется для эффективного получения требуемые (отфильтрованные) наборы запросов указанной модели.

Эти поля были затем обновлены во время создания / изменения соответствующих Bottom экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...