我在Django 1.9中有一个非常简单的模型(不使用任何其他RESTful框架或任何东西,因为我试图保持基础)。 User
只是默认的Django-Auth用户。
class Post(models.Model):
author = models.ForeignKey(User)
text = models.TextField(null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
modified_at = models.DateTimeField(auto_now=True, null=True)
在序列化JSON响应时,我使用以下视图:
items = []
for post in Post.objects.values():
post['author'] = User.objects.get(pk=post['author_id']).username
items.append(post)
return JsonResponse({'posts': items}, safe=False)
有没有办法跳过author_id
的检索并重新插入author
?
答案 0 :(得分:1)
我希望我能正确理解你。
这样做的正确方法是:
for post in Post.objects.values('id', 'name', 'author__username'):
...
如果没有您当前代码产生的其他查询,请添加post['author__username']
。
虽然,因为您正在编写RESTy框架,所以您可能关心密钥的命名。老实说,我没有比这更好的解决方案:
for post in ...:
post['author'] = post['author__username']
del post['author__username']