如何查询关联至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
相关产品推荐
相关产品推荐

