【发布时间】:2019-11-30 00:30:38
【问题描述】:
我正在寻找一种方法来用更少的代码实现过滤器,例如,我当前的过滤器在下面工作正常:
if company == 1:
unknownFood = food.filter(
purchase__credit = 2
company__name__isnull=True
)
elif company == 2:
unknownFood = food.filter(
purchase__credit = 2
company__name__isnull=False
)
else:
unknownFood = food.filter(
purchase__credit = 2
)
上面的代码,出现了几行重复的代码,我认为这不是最佳实践。
我试图用比上面代码更少的行代码来实现这一点。
给你:
if company == 1:
isNull = True
elif company == 2:
isNull = False
else:
pass
unknownFood = food.filter(
purchase__credit = 2
company__name__isnull=isNull
)
如果我喜欢上述缩短的方式,它会触发我一个错误,因为
company__name__isnull 等于 false 或 true 并且它的第三个块既不为真也不为假
谁能建议我实现这一目标的最佳方法?
【问题讨论】:
-
如果你有一个工作代码并且正在寻找代码审查,有codereview.stackexchange.com。只要确保检查并遵循他们的指导方针
-
您发布的两个代码 sn-ps 都会引发语法错误。请粘贴实际代码而不是假设代码。
标签: django django-orm django-filter