Python 带有默认值的Django模型过滤器

Python 带有默认值的Django模型过滤器,python,python-3.x,django,Python,Python 3.x,Django,我想做一些类似于的事情,但是如果没有作为参数传递,我想要一个带有默认值的过滤器 例如: 因此,我不必每次都记得使用is\u active=True进行筛选,因为我将始终只希望使用活动用户,除非我故意传递is\u active=False 我认为get\u queryset()覆盖在这种情况下不起作用。如果在那里,你能加入吗 class MyUserManager(models.Manager): def get_queryset(self, is_active): if

我想做一些类似于的事情,但是如果没有作为参数传递,我想要一个带有默认值的过滤器

例如:

因此,我不必每次都记得使用
is\u active=True
进行筛选,因为我将始终只希望使用活动用户,除非我故意传递
is\u active=False


我认为
get\u queryset()
覆盖在这种情况下不起作用。

如果
在那里,你能加入

class MyUserManager(models.Manager):
    def get_queryset(self, is_active):
        if is_active == True or is_active == None:
            return super().get_queryset().filter(is_active=is_active)
        elif is_active == False:
            return super().get_queryset().filter(is_active=is_active)
与答案1相似

class MyUserManager(models.Manager):
def get_queryset(self, is_active):

    if is_active not False:
      is_active = True:
    return super().get_queryset().filter(is_active=is_active)
   

Setting is_active=True,因为方法参数已经将其值设置为True,如果它没有作为参数传递。当我遇到类似问题时,我只需要创建一个单独的函数。在您的例子中,它可能类似于
def get\u active\u users:return super().get\u queryset().filter(is\u active=True)
def get\u inactive\u users:return super().get\u queryset().filter(is\u active=False)
。我通常在查询被过滤器和其他东西弄得乱七八糟的时候这样做,但在您的情况下也可以这样做
class MyUserManager(models.Manager):
def get_queryset(self, is_active):

    if is_active not False:
      is_active = True:
    return super().get_queryset().filter(is_active=is_active)