我正在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)
这是我从此查询中获得的“位置”对象之一:
{“fields”:{“status”:1,“last_updated_at”:“2014-12-10T16:30:29.603Z”,“海拔”:0.0,“经度”:-2.21698,“用户”:2 ,“提供者”:“0”,“纬度”:53.456542},“模特”:“app.location”,“pk”:5}
在这种情况下,我没有获取用户名,而是获取对象“user:2”的id,所以我的问题是如何查询模型以返回相同的列表但是使用类似“User.username:爱德华多”。
答案 0 :(得分:1)
location对象包含用户对象,因此您可以获得如下用户名:
for location in Location.objects.filter(user=friends).select_related('user'):
print(location.user.username)
请注意。我使用select_related
来避免对db进行额外查询。
<强>更新强> 对于序列化:
>>> serializers.serialize('json', Location.objects.filter(user=friends), indent=4,
... use_natural_foreign_keys=True)
答案 1 :(得分:1)