获取相关对象在 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?

尝试过:

  1. return queryset.filter(suppliers__mobile_phone__iregex=r’^(?!\s*$).+’) Returns 有重复项的查询集
  2. return queryset.exclude(suppliers__isnull=True).exclude(suppliers__mobile_phone__exact=‘’) 当公司有 2 个供应商,其中没有 mobile_phone.
  3. 时不起作用

对文档的任何帮助 // 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/