как объединить модели в django rest framework в один класс сериализатора - PullRequest
1 голос
/ 25 апреля 2020

я пытаюсь добавить класс CommentSerializer для написания комментариев с PostListSerializer, я хочу отображать поле комментария в нижней части каждого существующего сообщения django: 2.2 models.py

class Comment(models.Model):
    id = models.UUIDField(default=uuid.uuid4,primary_key=True,editable=False)
    author = models.ForeignKey(Account,on_delete=models.CASCADE,related_name='comments')
    post= models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    comment_content = models.TextField(max_length=400)
    commented_at = models.DateTimeField(auto_now_add=True)
    edited_at = models.DateTimeField(auto_now=True)
    image = models.ImageField(upload_to=random_url,blank=True,null=True)
    parent = models.ForeignKey('self',null=True,blank=True,on_delete=models.CASCADE,related_name='replies')
    active = models.BooleanField(default=True)

это serializers.py

class CommentCreateSerialzier(ModelSerializer):
    class Meta:
        model = Comment
        fields = [
            'comment_content','image'

        ]

class TripListSerializer(TaggitSerializer, GeoFeatureModelSerializerGIS):
    tags = NewTagListSerializerField()
    comments = SerializerMethodField()
    detail_url = post_detail_url
    user= SerializerMethodField()

    class Meta:
    model = Post
        geo_field = 'location'
        fields = [
        'detail_url','user','name','city','tags','comments'
    ]
    def get_user(self,obj):
        return str(obj.user.username)

    def get_comments(self,obj):
        comment = Comment.objects.filter(post=obj,active=True)
        comments = CommentSerialzier(comment,many=True).data
        return comments

и это мои views.py

class CommentCreateSerializer(CreateAPIView):
    serializer_class = CommentCreateSerialzier
    message = 'you dont have permission to comment'
    permission_classes = [IsAuthenticated]
    def perform_create(self):
        serializer.save(author=self.request.username)

как добавить объект записи по умолчанию в каждую публикацию? и делает то же самое для ответов, также спасибо за ответ

...