Задать вопрос
@Animkim
Питон вокруг меня

Django, как вытащить потомка?

class Category(models.Model):
    parent = models.ForeignKey('self', null=True, blank=True)

Примерно такая модель, как мне достать потомков?
  • Вопрос задан
  • 622 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@deliro
category.category_set.all()

Если нужно покрасивее:
class Category(models.Model):
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')

category.children.all()
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Category.objects.filter(parent=some_category)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
Для деревьев можно использовать django-mptt, тогда можно потомков с любым уровнем вложенности вытаскивать одним запросом.
Ответ написан
Комментировать
@iegor
Если вам нужны все потомки, то вам нужен рекурсивный запрос. Поддерживается большинством SQL, но сомневаюсь, что джанга умеет что-то подобное. Необходимо написать запрос на чистом sql. Как альтернатива можно на джанге сформировать кучу отдельных запросов, но это плохой путь. Чистый sql или может кто-то, написал какую-нибудь библитеку для этого
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы