我有一个表'评论',在内部字段'user',我会在同一个查询中获得个人资料个人资料。目前我有类似的东西
comments = models.Comment.objects.select_related('author__profile').filter(post=article)
不幸的是我无法检索有关个人资料的信息,我只能通过
来查看comment.author._profile_set_cache
任何让它看起来很漂亮的想法?
comment.author.profile
答案 0 :(得分:0)
如果'author'来自contrib.auth用户模型,那么您没有到UserProfile的FK。这是一个“反向一对一”。幸运的是,django能够使用“select_related”进行一对一的反向导航,因此查询实际上是在检索字段(您可以使用
进行检查)print models.Comment.objects.select_related('author__profile').filter(post=article).query
获取用户个人资料的方法是使用get_profile()
方法:
print comment.author.get_profile()
由于配置文件数据已经被缓存(这就是_profile_set_cache用于的原因),获取对象意味着没有其他查询。