使用外键访问其他模型中的对象

时间:2014-07-15 01:59:33

标签: python mysql sql django django-models

在我的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_relatedprefetch_related,但我不确定我是否可以在这里使用它们。

1 个答案:

答案 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。)