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)