在我的django项目中,我有一个模型,用于存储用户的位置,user_id
是django User
模型的外键。这是模型
class Points(models.Model):
user_id = models.ForeignKey(User)
lat = models.FloatField()
lon = models.FloatField()
现在我想执行这样的查询:
Points.objects.filter(user_id=id).values_list('user_id','lat','lon')
但我也希望此列表中的django' username
模型中的User
字段。无论如何,我可以做到这一点,而不必执行另一个查询,如User.objects.get(id=id).value_list('username')
,然后加入这两个列表。我浏览了select_related和prefetch_related,但我不确定我是否可以在这里使用它们。
答案 0 :(得分:1)
您可以使用双下划线表示法在一次调用中获取相关字段。试试这个:
Points.objects.filter(user_id=id)
.values_list('user_id', 'lat', 'lon', 'user_id__username')
(虽然您应该将user_id
重命名为user
。Django会将_id
附加到您的外键字段,这意味着您现在有两个属性:user_id
评估为User
对象和user_id_id
,它将评估为数字ID。)