Django rest framework: Получение вложенного представления дочерних элементов

У меня есть дерево элементов, которые ссылаются друг на друга как родитель/дочь. Теперь я хочу сериализовать дочерние элементы как вложенные объекты, чтобы минимизировать запросы. Моя проблема в том, что я не могу инициировать класс сериализатора изнутри самого себя (очевидно)... Есть ли способ сделать это?

(Я исправлю проблему рекурсии, пожалуйста, не обращайте на это внимания)

Модель:

class Item(models.Model):
    name = models.CharField(max_length=128, verbose_name=_("Name"))
    dashboard = models.ForeignKey(Dashboard, on_delete=models.CASCADE, verbose_name=_("Dashboard"))
    config = models.JSONField(null=True, blank=True, verbose_name=_("Configuration"))
    parent = models.ForeignKey("Item", on_delete=models.CASCADE, related_name="children", null=True, blank=True, verbose_name=_("Parent"))
    previous = models.OneToOneField("Item", related_name="next", null=True, blank=True, on_delete=link_previous_item_on_delete, verbose_name=_("Previous"))

    def __str__(self):
        return self.name

Serializer:

class ItemSerializer(serializers.HyperlinkedModelSerializer):
    # This will obviously not work:
    children = ItemSerializer(many=True, read_only=True)
    
    class Meta:
        model = Item
        fields = ("name", "dashboard", "config", "children")
Вернуться на верх