【发布时间】:2015-06-04 09:56:35
【问题描述】:
我有两个表,分别名为 Post 和 Reply。用户只能为每个Post 创建一个Response。模型如下所示:
class Post(models.Model):
name = models.CharField(max_length = 100)
class Reply(models.Model):
post = models.ForeignKey(Post, related_name = 'replies')
现在,我有一个返回帖子的视图,如下所示:
class PostList(generics.ListAPIView):
permission_classes = (permissions.IsAuthenticated,)
queryset = Post.objects.all()
serializer_class = PostSerializer
还有一个帖子的序列化器:
class PostSerializer(serializers.ModelSerializer):
class Meta:
fields = ('id', 'name')
此视图的结果如下所示:
[
{
"id": "1",
"name": "The first post"
},
{
"id": "2",
"name": "The second post"
}
]
现在,针对实际问题:如果用户已回复帖子,我想在结果中添加一个布尔字段 true,如果没有回复,则为 false。基本上,当前用户已回复第一个帖子但未回复第二个帖子的情况的结果如下所示:
[
{
"id": "1",
"name": "The first post",
"replied": "true"
},
{
"id": "2",
"name": "The second post",
"replied": "false"
}
]
我如何实现这一目标?我有一种预感,这应该以某种方式在序列化程序中实现,但我不知道该怎么做。
提前感谢您的帮助!
【问题讨论】:
-
第一个想法是在您的序列化程序中添加自定义序列化程序方法字段(django-rest-framework.org/api-guide/fields/…),但请记住,您的序列化程序类中必须有当前用户对象(例如,您可以覆盖序列化构造函数来传递它)。
标签: python django django-rest-framework django-1.7