Если в ваших таблицах действительно иерархические деревья, этот метод гораздо менее применим, и вам следует искать другое решение.

отрим эту (джанго) модель:

class Source(models.Model):
   # Some other fields
   type = models.ForeignKey('Type')

class Type(models.Model):
    # Some other fields
    parent = models.ForeignKey('self')

Эта модель имеет внешний ключ к себе, что создает иерархию.

Допустим, у нас есть следующая иерархия:

Website
    Blog
    News    
    Social Network
    Q&A
    Forum
Radio
    Government radio
    Pirate radio
    Commercial radio
    Internet radio

Как мне эффективно сделать запрос, чтобы, если я выберуSource поTypeЯ тоже получаюSources которые имеютType это ребенок данного типа?

Я попытался пройти через все дерево, но это не очень эффективно, очевидно.

Другой вариант - использовать ManyToManyField и автоматически присоединять родительские типы, переопределяя метод save (). Например, если выбран «блог», также создается запись для «веб-сайта». Но это кажется мне излишним.

Ответы на вопрос(3)

Ваш ответ на вопрос