Django: запрос select_related игнорируется, а связанные запросы все равно выполняются

У меня есть модель меню со следующими полями:

class MenuItem(models.Model):
   name = models.CharField()
   parent = models.ForeignKey(self, ...)

и 2 сериализатора:

class MenuItemSerializer(serializers.ModelSerializer):
   children = serializer.SerializerMethodField()
    
   class Meta:
       model = MenuItem

   def get_children(self, data):
       return MenuItemSerializer(data.children, many=True).data


class MenuSerializer(serializers.Serializer):
   first_menu = serializer.SerializerMethodField()

   def get_default(self, __):
        return MenuItemSerializer(MenuItem.objects.filter(...).select_related("parent")), many=True).data

Я добавляю select_related к запросу пункта меню, думая, что это должно отфильтровать пункты меню и затем получить их дочерние элементы, но выполняется много запросов. Первый из них - join, но затем есть еще 20+ других, где каждый пункт меню извлекается по id. Почему это не работает?

Вернуться на верх