【发布时间】:2020-02-04 16:17:39
【问题描述】:
我正在开发 Django 1.10 和 PostgreSQL9.6
我的项目中有两个模型:订单和客户。我还使用 Django 的 auth.User 来存储登录凭据。
这是一段代码:
from django.contrib.auth.models import User
from django.db import models
class Order(models.Model):
created_by = models.ForeignKey(User, null=True, on_delete=models.SET_NULL, related_name='created_orders')
# ... other fields ...
class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# ... other fields ...
现在,我需要显示一个customers 的表格,并显示他们每个人创建的一些订单。
直截了当的代码是:
for customer in Customer.objects.all():
print(customer.user.created_orders.count())
现在我需要避免 N+1 问题并让 Django 以恒定数量的查询获取所有数据。
我试过写类似的东西:
query = Customer.objects.select_related('user').annotate(
orders_count=Count('user.created_orders')
)
但这给了我一个像Cannot resolve keyword 'user.created_orders' into field.这样的错误
你能帮我解决这个问题吗?
【问题讨论】:
标签: python django postgresql orm