为什么我的序列化器字段不显示?

时间:2020-12-22 14:13:35

标签: django django-rest-framework

现在我在显示字段的输出方面没有问题。但不知何故我在 json 输出中看不到 postlikes_set 的输出。我没有收到任何错误或其他内容,我只是看不到它。我不知道为什么。有人知道这个问题吗?这是我的代码。

模型

class Article(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='articles')
    caption = models.CharField(max_length=250)


class LikePostModel(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, unique=True, on_delete=models.CASCADE,related_name='postlikes',null=True)
    article = models.ForeignKey(Article,  on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now=True)

序列化器

class LikePostViewSerializer(serializers.ModelSerializer):

    class Meta:
        model = LikePostModel
        fields = ('id',"author","article")

class ArticleViewSerializer(serializers.ModelSerializer):
    images_set = ArticleImageViewSerializer(source='images',required=False,many=True)
    comments_set = CommentViewSerializer(source='comments',required=False,many=True)
    postlikes_set = LikePostViewSerializer(source='postlikes',required=False,many=True)

    class Meta:
        model = Article
        fields = ('id','caption','images_set','comments_set','postlikes_set')

    def create(self, validated_data):
     return Article.objects.create(**validated_data)

输出

[
    {
        "id": "092e929f-c845-403d-8373-84c745140c11",
        "caption": "caption",
        "images_set": [],
        "comments_set": []
    }
]

1 个答案:

答案 0 :(得分:1)

当您的序列化器模型是文章时,您正尝试访问 LikePostModel 的字段。与“评论”的不同之处在于它指的是您的文章模型的一个字段。

现在,我不确切知道您期望的 JSON,但这将在其序列化程序中输出您的 LikePostModel 的作者(又名 postlikes)字段。

#models.py
class LikePostModel(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, unique=True, on_delete=models.CASCADE,related_name='postlikes',null=True)
    article = models.ForeignKey(Article,  on_delete=models.CASCADE, related_name='postlikes_set')
    created = models.DateTimeField(auto_now=True)

# serializers.py
class LikePostViewSerializer(serializers.ModelSerializer):

    class Meta:
        model = LikePostModel
        fields = ('id',"author","article")

class ArticleViewSerializer(serializers.ModelSerializer):
    images_set = ArticleImageViewSerializer(source='images',required=False,many=True)
    comments_set = CommentViewSerializer(source='comments',required=False,many=True)
    postlikes_set = LikePostViewSerializer(required=False,many=True)

    class Meta:
        model = Article
        fields = ('id','caption','images_set','comments_set','postlikes_set')

    def create(self, validated_data):
     return Article.objects.create(**validated_data)
相关问题