Как получить все связанные объекты всех объектов в наборе запросов?

#django

Вопрос:

К сожалению, я не могу найти прямого ответа на этот вопрос, хотя есть несколько связанных с этим вопросов.

Скажем, у нас есть:

 class Category(models.Model):
    name = models.CharField(max_length=50)

class SubCategory(models.Model):
    name = models.CharField(max_length=50)
    category = models.ForeignKey(Category,on_delete=CASCADE, blank=True, null=True, related_name='subcategories')
 

Я знаю, что могу получить все подкатегории определенной категории с помощью
some_category.subcategories.all()

Но как мне получить набор запросов всех подкатегорий всех категорий в наборе запросов?

Комментарии:

1. Subcategory.objects.all() ? Поскольку значение ForeignKey не может быть аннулировано, это означает, что каждое Subcategory принадлежит ровно одному Category .

2. @WillemVanOnsem Извините, это аннулируется, я сейчас отредактирую

Ответ №1:

Вы можете получить все Subcategory s, связанные с коллекцией Category s, с помощью:

 Subcategory.objects.filter(category__in=mycategories) 

Здесь мы используем __in поиск [Django-doc] для получения только тех Subcategory s, для которых указана категория mycategories .

Комментарии:

1. Я не думаю, что это решает мою проблему, потому что я не хочу, чтобы существовали все подразделы каждой категории. Мне нужны только те, категория которых указана в моем отфильтрованном наборе запросов.

2. @eva: ах, тогда вы делаете это с __in помощью поиска, см. Редактирование.