我正在Django写一个视图,它应该可以重温我的朋友位置 . 使用基本查询检索好友列表后,看起来非常简单;但是我还想知道的是User对象的用户名,它是我的Location模型的外键 .
class Location(models.Model):
user = models.ForeignKey(User, null=True)
latitude = models.FloatField(max_length=100, null=True)
longitude = models.FloatField(max_length=100, null=True)
altitude = models.FloatField(max_length=100, null=True)
provider = models.CharField(max_length=100, null=True)
status = models.IntegerField(max_length=1, default='0', null=True)
last_updated_at = models.DateTimeField(auto_now=True)
我以这种方式查询模型:
friends_location = Location.objects.filter(user = friends)
这是我从此查询中获得的“Location”对象之一:
{“fields”:{“status”:1,“last_updated_at”:“2014-12-10T16:30:29.603Z”,“海拔”:0.0,“经度”:-2.21698,“用户”:2,“ provider“:”0“,”latitude“:53.456542},”model“:”app.location“,”pk“:5}
在这种情况下,我得到的对象的id为“user:2”,而不是获取用户名,所以我的问题是如何查询模型以返回相同的列表,但使用类似“User.username:edoardo”的内容 .
2 回答
location对象包含用户对象,因此您可以获得如下的用户名:
注意 . 我使用
select_related
来避免对db进行额外的查询 .Update 对于序列化:
您可以使用values()选择所需的字段 . 在这种情况下,您必须从查询集的结果中指定要保留的所有字段 .
为了获得用户名,您将:
---编辑---
作为对你的评论和@Alex建议的解决方案的回答,我认为你应该从Django阅读this doc .