У меня есть веб-сайт блога, и мои посетители также могут комментировать мои сообщения в блоге. Каждая запись в блоге имеет несколько комментариев, и я хочу показать эти комментарии под каждой моей одной записью в блоге. Предположим, что в Blog1 есть 10 комментариев, поэтому все 10 комментариев будут отображаться в разделе Blog1.

Вот мой код:

models.py

class Blog(models.Model):
    blog_title = models.CharField(max_length=200, unique=True)

class Comment(models.Model):
  name = models.CharField(max_length=100)
  email = models.EmailField(max_length=100)
  comment = models.TextField()
  blog = models.ForeignKey(Blog, on_delete=models.CASCADE)

< Сильный > Serializer.py

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


class BlogSerializer(serializers.ModelSerializer):  
    class Meta:
        model = Blog
        exclude = ("author", "blog_is_published")
        lookup_field = 'blog_slug'
        extra_kwargs = {
            'url': {'lookup_field': 'blog_slug'}
        }

views.py:

class BlogViewSet(viewsets.ModelViewSet):
    queryset = Blog.objects.all().order_by('-id')
    serializer_class = BlogSerializer
    pagination_class = BlogPagination
    lookup_field = 'blog_slug'
0
boyenec 27 Ноя 2022 в 08:03

1 ответ

Вы можете получить доступ к списку комментариев из объекта блога, используя атрибут comment_set, поэтому добавьте поле comment_set в свой сериализатор:

class BlogSerializer(serializers.ModelSerializer):  
    comment_set = CommentSerializer(many=True)

    class Meta:
        model = Blog
        exclude = ("author", "blog_is_published")
        lookup_field = 'blog_slug'
        extra_kwargs = {
            'url': {'lookup_field': 'blog_slug'}
        }
2
neverwalkaloner 27 Ноя 2022 в 08:06