You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询关联至Invoice或DamageClaim的BillingNumbering数据集?

Django 查询关联Invoice或DamageClaim的BillingNumbering对象

模型定义

class BillingNumbering(models.Model):
    number = models.IntegerField()
    date = models.DateField(default=now)

class Invoice(models.Model):
    number = models.OneToOneField(BillingNumbering, on_delete=models.PROTECT)
    created_at = models.DateTimeField(auto_now_add=True,
                                      null=True, blank=True)

class DamageClaim(models.Model):
    number = models.OneToOneField(BillingNumbering, on_delete=models.PROTECT)
    created_at = models.DateTimeField(auto_now_add=True,
                                      null=True, blank=True)

查询需求

需要筛选出仅关联至Invoice或DamageClaim的BillingNumbering对象:

  • <BillingNumbering: 1> 关联至Invoice
  • <BillingNumbering: 2> 关联至DamageClaim
  • <BillingNumbering: 3> 未关联任何模型,访问instance.invoice或instance.damageclaim会触发ObjectDoesNotExist错误

目标是通过BillingNumbering的filter方法,仅返回<BillingNumbering: 1>和<BillingNumbering: 2>。

解决方案

参考思路后,最终实现代码如下:

from django.db.models import Q

qs = BillingNumbering.objects.filter(Q(damageclaim__isnull=False) | Q(invoice__isnull=False))

内容的提问来源于stack exchange,提问作者Dean Christian Armada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:45:13