显示并序列化select_related()模型方法的结果

时间:2018-06-22 22:28:40

标签: django django-models django-rest-framework drf-queryset

我有两个简单的模型: 用户(标准Django用户) 和 类Post(models.Model):

class Post (models.Model):
   name = models.CharField(max_length=100)
   user = models.ForeignKey(User, on_delete=models.CASCADE)
   def __str__(self):
    return self.name

我的前端(SPA)发送请求以获取所有帖子,因此我的Django API可以获取Post.objects.all()。但是,我也想将User.username放入响应中。我的理解是,我可以通过运行以下命令来做到这一点:

posts=Post.objects.select_related('user').all()

当我从产生的SQL查询中运行posts.query时,我可以看到已经拉入了User字段,但是当我尝试序列化此数据时,似乎看不到它们。我在这里错过了一些非常基本的东西吗?将相关数据与父数据一起序列化并与DRF响应一起发送出去的方法是什么? 我已经尝试了本文介绍的方法,但是使用这种方法构建的序列化程序似乎并没有为我返回相关数据: http://ses4j.github.io/2015/11/23/optimizing-slow-django-rest-framework-performance/

1 个答案:

答案 0 :(得分:1)

PostSerializer():
user = UserSerializer()
class Meta:
    model = Post
    fields = ('name', 'user')