вот моя модель учетной записи, которая связана с пользователемполучение связанных с объектом в одной строке .get() запроса (OneToOneField)
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()
, но так как есть только одна учетная запись с этим идентификатором, я хочу пользователя .get() и показать объект без цикла
account = Accounts.objects.get(user_id=user_id).select_related()
, но я получаю
'Accounts' object has no attribute 'select_related'
так как я делаю это соединение при выборе одной строки? в основном я хочу, чтобы избежать использования цикла на объекте
спасибо, что буду делать, просто сбился любопытство ... нет вступать в .get()? – hretic
@hretic - потому что 'select_related' должен использоваться в наборе запросов (поскольку это операция базы данных), где as get возвращает объект – Sayse
Не имеет значения, используете ли вы' get() 'или' first() '-' Accounts.objects.filter (user_id = user_id) .select_related(). Get() 'будет работать. Главное, что вы сначала вызываете 'select_related()'. – Alasdair