Включение данных о самоотношении в запрос в 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
.