Объект не имеет атрибута "_set" в django

Не могу понять, где моя ошибка. Не удается отобразить список комментариев блога. Я использую django и react и имею следующие модели записи в блоге и комментариев в блоге

class BlogComment(models.Model):
    post = models.ForeignKey(BlogPost, on_delete=models.SET_NULL, related_name="post_comment",  null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name="user_comment", null=True)
    name = models.CharField(max_length=200, null=True, blank=True)
    comment = models.TextField(null=True, blank=True)
    dateCreated = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.user.username)

class BlogPost(models.Model):
    ...
    author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
    body = models.TextField()
    dateCreated = models.DateTimeField(auto_now_add=True)

А сериализаторами для обеих моделей являются:

class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = BlogComment
        fields = '__all__'

class BlogPostSerializer(serializers.ModelSerializer):
    comments = serializers.SerializerMethodField(read_only=True)
    class Meta:
        model = BlogPost
        fields = "__all__"

    def get_comments(self, obj):
        comments = obj.comment_set.all()
        serializer = CommentSerializer(comments, many=True)
        return serializer.data

Конечная точка комментария - path('posts/<str:pk>/comment/', CreateCommentView, name="create-comment"),. Конечная точка работает. Я могу добавлять комментарии к постам как с фронт-энда, так и с фронт-энда. Ошибка возникает, когда я пытаюсь создать карту через получаю ошибкуAttributeError: 'BlogPost' object has no attribute 'comment_set'. Вот код, который я использую для отображения всех блогов конкретного поста на странице подробностей блога в react

<div variant='flush'>
                    {blog.comments.map((comment) => (
                        <div key={comment.id}>
                            <strong>{comment.name}</strong>            
                            <p>{comment.dateCreated}</p>
                            <p>{comment.comment}</p>
                        </div>
                    ))}
                </div>

Вот код, который я использую для отображения всех блогов конкретного поста на странице подробностей блога в react. Если я не создаю карту, то ошибка не возникает, и я могу добавлять комментарии. Однако для того, чтобы отобразить комментарии под каждым постом в блоге, я создаю карту. Как это исправить?

Вам необходимо использовать post_comment:

comments = obj.post_comment.all()

Вы заявили об этом здесь:

post = models.ForeignKey(BlogPost, on_delete=models.SET_NULL, related_name="post_comment",  null=True)

related_name используется как имя для отношения Django. См. подробнее здесь.

Но замена post_comment на что-то другое было бы лучшим решением для меня.

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