现在我在显示字段的输出方面没有问题。但不知何故我在 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": []
}
]
答案 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)