在单行中获取相关对象.get()查询(OneToOneField)

时间:2016-06-02 12:35:57

标签: python django

这是我的帐户模型,与用户

相关
class Accounts(models.Model):
    user = models.OneToOneField(User , unique=True)
    name = models.CharField(max_length=50 , default='')
    lastname = models.CharField(max_length=50, default='')
    phone    = models.CharField(max_length=11, default='')
    mobile   = models.CharField(max_length=11, default='')

我想要这个查询(忽略语法,命名错误)

select accounts.* , auth_user.username , auth_user.email
from accounts 
join auth_user on auth_user.id = accounts.user_id 
where accounts.user_id = 1 

所以我可以做;

account = Accounts.objects.filter(user_id=user_id).select_related()

但由于只有一个帐户有该ID,我想用户.get()并显示没有循环的对象

account = Accounts.objects.get(user_id=user_id).select_related()

但是我得到了

'Accounts' object has no attribute 'select_related'

那么如何在单行选择中加入?基本上我想避免在对象上使用循环

1 个答案:

答案 0 :(得分:0)

您可以使用first代替获取

  

返回查询集匹配的第一个对象,如果没有匹配的对象,则返回None。如果QuerySet没有定义排序,那么查询集将由主键自动排序。

account = Accounts.objects.filter(user_id=user_id).select_related().first()