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. Почему это не работает?