小编Str*_*est的帖子

django一旦获取切片,就无法组合查询

有没有办法连接切片查询集?它的简化示例(我意识到这个特定的例子可以写在一个查询中):

>>> ...
>>> query_set_1 = Model.objects.filter(...)[:3]
>>> query_set_2 = Model.objects.filter(...)[5:]

>>> query_set_1 | query_set_2
Run Code Online (Sandbox Code Playgroud)

不去工作,

>>> AssertionError: Cannot combine queries once a slice has been taken.
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

django concatenation django-queryset slice

5
推荐指数
2
解决办法
3955
查看次数

如何在RawSQL中引用当前对象(F对象)

我的Order模型如下所示:

class Order(models.Model):
    ...
    billing_email = models.EmailField()
    ...
Run Code Online (Sandbox Code Playgroud)

我要查找的所需输出是一个ValuesQuerySet将包含一些字段值和具有相同数量的订单金额的计算值的输出billing_email

我试图引用billing_emailF对象,但这样做的结果如下到错误:

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'
Run Code Online (Sandbox Code Playgroud)

我需要评估并作为每个实例的额外字段输出的值几乎是:

Order.objects.filter(billing_email__iexact=<current_billing_email>).count()
Run Code Online (Sandbox Code Playgroud)

对于每个实例,我真的不想遍历实际实例并进行重构。我一定在这里缺少一些简单的解决方案。

在此先感谢您的帮助。

python django postgresql

5
推荐指数
1
解决办法
275
查看次数