【问题标题】:django - query filter on manytomany is emptydjango - manytomany 上的查询过滤器为空
【发布时间】:2011-05-10 05:34:14
【问题描述】:

在 Django 中,有一种方法可以过滤为空或为空的多态字段。

class TestModel(models.Model):
    name = models.CharField(_('set name'), max_length=200)
    manytomany = models.ManyToManyField('AnotherModel', blank=True, null=True)

print TestModel.objects.filter(manytomany__is_null=True)

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:
    print TestModel.objects.filter(manytomany=None)
    

    【讨论】:

    • 反之亦然TestModel.objects.exclude(manytomany=None)
    • 有没有办法查询“AnotherModel”中不相关/未附加的对象?尝试清理多对多模型。
    • 使用AnotherModel.objects.filter(testmodel_set=None) 为我工作。如果您使用的是related name,您当然应该使用它。
    【解决方案2】:

    除了@Bernhard 答案之外,还可以使用Q() 对象来实现其他可能的解决方案。

    from django.db.models import Q
    
    filters = Q(manytomany=None)
    
    TestModel.objects.filter(filters)
    

    否定:

    filters = ~Q(manytomany=None)
    
    TestModel.objects.filter(filters)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2011-09-17
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      相关资源
      最近更新 更多