我有发票模型

class Invoice(models.Model):
    name                         = models.ForeignKey('Patient', on_delete=models.CASCADE)

我有另一种发票金额模型,其发票FK为

class InvoiceAmount(models.Model):
    invoice                         = models.ForeignKey('Invoice', on_delete=models.CASCADE)
    amount                          = models.IntegerField(default=0)
    is_paid                         = models.BooleanField(default=False)

我想要获得IS_Payed=真实发票金额的发票

我正在使用此查询,但它不起作用

Invoice.objects.annotate(all_paid=Exists(InvoiceAmount.objects.filter(is_paid=True, id=OuterRef('pk')))).filter(all_paid=True) 

推荐答案

您可以查看is_paid=False中是否没有InvoiceAmount,因此:

from django.db.models import Exists, OuterRef, Q

Invoice.objects.annotate(
    all_paid=~Exists(
        InvoiceAmount.objects.filter(~Q(is_paid=True), invoice_id=OuterRef('pk'))
    )
).filter(all_paid=True)

Django相关问答推荐

在Django中使用Generil.ListView类时,分页不起作用

如何将我的函数添加到值参数?

Django如何在没有ctrl点击的情况下允许多选

如何在视图中的 Django 重定向末尾附加字符串?

有谁知道是否可以将您的 Django Heroku 应用程序放到 App Store/Google Play 上?

Pytest-django - 测试创建和传递所需的用户对象

Django 和 HTML 无法从指定时间开始视频

如何获得用户权限?

在 Django 的 TextField 中禁用 HTML 转义

为 Django 模型生成非顺序 ID/PK

如何查看 Django 调试工具栏?

如何在 Django 测试框架中修改会话

Django - 如何从模型中 Select 特定列?

带有消息判断的 Django/Python assertRaises

Django模型字段按变量

Django - 了解 X-Sendfile

Django查询否定

Django中GROUP BY中注释的聚合

过滤查询参数

Django:如何从模板中识别调用视图?