У меня есть следующий код:
class Invoice(models.Model):
customer = models.ForeignKey(User, blank=True, null=True)
customer_name = models.CharField(max_length=50, blank=True, null=True)
email = models.CharField(max_length=100, blank=True, null=True)
#----------------------------------
invoices = Invoice.objects.raw("""
SELECT
`invoices`.`id`,
`invoices`.`customer_id`,
`invoices`.`customer_name`,
`invoices`.`email` AS `inv_email`,
`auth_user`.`username`,
`auth_user`.`email` AS `auth_email`,
COUNT('customer_id') AS `buy_count`
FROM `invoices`
LEFT JOIN `auth_user` ON `auth_user`.id = `invoices`.customer_id
GROUP BY `customer_id`, `invoices`.`email`
""", translations={'inv_email': 'email', 'auth_email': 'customer.email'})
Но, когда я пишу invoices[i].customer
Django делает SQL-запрос для каждого клиента. Есть ли способ сопоставить JOIN
с моделью Django в необработанном запросе? Или этот SQL-запрос может быть реализован с использованием чистого Django ORM?