获取相关对象在 Django ORM 中具有非空白字段的所有对象?
Get all objects where related object has non-blank field in Django ORM?
我有两个模型:
Company:
pk
...
Supplier:
pk
mobile_phone = models.CharField(max_length=200, default='', blank=True, verbose_name="Мобильный телефон")
company_id
...
所以:
- 公司可能有很多个供应商
- 供应商可能属于一个公司
如何获取至少有一个非空白供应商的所有公司mobile_phone?
尝试过:
return queryset.filter(suppliers__mobile_phone__iregex=r’^(?!\s*$).+’)
Returns 有重复项的查询集
return queryset.exclude(suppliers__isnull=True).exclude(suppliers__mobile_phone__exact=‘’)
当公司有 2 个供应商,其中没有 mobile_phone
. 时不起作用
对文档的任何帮助 // link 表示感谢。
如果您的 mobile_phone
可以为空,请不要使用 default=''
,请使用 null=True
。那么你或许可以试试:
Company.objects.filter(supplier__mobile_phone__isnull=False)
如果选项 1 对您有效,但它会返回重复项,您可以在字段上使用 distinct(),如文档所述:https://docs.djangoproject.com/en/1.10/ref/models/querysets/
我有两个模型:
Company:
pk
...
Supplier:
pk
mobile_phone = models.CharField(max_length=200, default='', blank=True, verbose_name="Мобильный телефон")
company_id
...
所以:
- 公司可能有很多个供应商
- 供应商可能属于一个公司
如何获取至少有一个非空白供应商的所有公司mobile_phone?
尝试过:
return queryset.filter(suppliers__mobile_phone__iregex=r’^(?!\s*$).+’)
Returns 有重复项的查询集return queryset.exclude(suppliers__isnull=True).exclude(suppliers__mobile_phone__exact=‘’)
当公司有 2 个供应商,其中没有mobile_phone
. 时不起作用
对文档的任何帮助 // link 表示感谢。
如果您的 mobile_phone
可以为空,请不要使用 default=''
,请使用 null=True
。那么你或许可以试试:
Company.objects.filter(supplier__mobile_phone__isnull=False)
如果选项 1 对您有效,但它会返回重复项,您可以在字段上使用 distinct(),如文档所述:https://docs.djangoproject.com/en/1.10/ref/models/querysets/