【发布时间】:2016-08-05 18:05:53
【问题描述】:
我的Order 模型如下所示:
class Order(models.Model):
...
billing_email = models.EmailField()
...
我正在寻找的期望输出是 ValuesQuerySet,它将包含一些字段值和具有相同 billing_email 的订单数量的计算值。
我试图用F 对象引用billing_email,但执行以下操作导致错误:
In [68]: orders = Order.objects.annotate(
total_orders=RawSQL(
"SELECT COUNT(*) FROM appname_order WHERE billing_email = %s",
(F('billing_email'),) # current instance's billing_email
),
)
In [69]: orders
Out [70]: ProgrammingError: can't adapt type 'F'
我需要评估并作为每个实例的额外字段输出的值几乎是:
Order.objects.filter(billing_email__iexact=<current_billing_email>).count()
对于每个实例,我真的不想遍历实际实例并重建。我一定在这里遗漏了一些简单的解决方案。
提前感谢您的帮助。
【问题讨论】:
-
我认为 usign F() 允许您获取列或字段的值,而无需从数据库中提取它。请参阅class F docs。
-
谢谢,但对我的问题没有帮助。问题是我需要在旅途中引用
this(当前)行的值(billing_email)来构造额外的输出
标签: python django postgresql