Если в ваших таблицах действительно иерархические деревья, этот метод гораздо менее применим, и вам следует искать другое решение.
отрим эту (джанго) модель:
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 (). Например, если выбран «блог», также создается запись для «веб-сайта». Но это кажется мне излишним.