【问题标题】:Django Queryset filter checks if related objects existDjango Queryset 过滤器检查相关对象是否存在
【发布时间】:2016-01-15 20:18:50
【问题描述】:

我正在尝试创建一个自定义管理器,它返回所有没有附加 Bar 的 Foo 实例。

# models.py
class Foo(models.Model):
    ...

class Bar(models.Model):
    foo = models.OneToOneField(Foo)
    ...

# managers.py
class FooQueryset(BaseQueryset):
    def no_bar(self):
        return ???

class FooManager(BaseManager):
    def get_queryset(self):
        return EcheanceQueryset(self.model, using=self._db)

    def no_bar(self):
        return self.get_queryset().no_bar()

我正在就查询集寻求帮助以获得所需的结果

【问题讨论】:

    标签: django python-3.x django-queryset django-1.7


    【解决方案1】:

    试试

    class FooManager(BaseManager):
    
        def no_bar(self):
            return self.get_queryset().filter(bar__isnull=True)
    

    【讨论】:

    • 很抱歉打扰您,但是您可以在 bar__isnull 中过滤 bar 吗?我只想过滤活跃的 Bar 实例。谢谢
    • 你的意思是bar is None or bar.active == True 吗? self.get_queryset().filter(Q(bar__isnull=True)|Q(bar.active==True))
    • self.get_queryset().exclude(Q(bar__isnull=False)&Q(bar__active=True)) 为我工作,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2022-11-12
    • 2015-01-19
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多