Включение данных о самоотношении в запрос в django

У меня есть модель комментариев, и я хочу включить все дочерние комментарии в запрос списка. В этом модале комментарий может иметь родительский комментарий

class Comment(models.Model):
    user = models.ForeignKey(
        "accounts.CustomUser", on_delete=models.CASCADE)
    post = models.ForeignKey(Blog, on_delete=models.CASCADE)
    body = models.TextField(blank=True)
    parentId = models.ForeignKey(
        "self", blank=True, on_delete=models.CASCADE, null=True)

    class Meta:
        ordering = ['-created_at']

я хочу перечислить комментарии, которые должны включать данные родительского комнета

ожидаемый массив

[
  {
    id:1,
    body:"anything",
    parentId:{
         id:34,
         body:"second"
       }
  },
  {
   //second
  }
]

Ваш точный пример использования может помочь, но, насколько я понимаю, есть две возможности.

Либо вы действительно хотите (или не против) получить список dict. В этом случае вам стоит обратить внимание на DRF сериализаторы https://www.django-rest-framework.org/api-guide/serializers/

class CommentParentSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    body = serializers.CharField()

class CommentSerializer(CommentParentSerializer):
    parentId = CommentParentSerializer()

Вызов CommentSerializer(Comment.objects.all(), many=True).data приведет к ответу.

Однако я боюсь, что это не то, о чем вы спрашивали, поскольку это уничтожит QuerySet и даст List.

Comment.objects.select_related("parentId") даст вам доступ к родителю любого комментария, например: my_comment.parentId.body.

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