我想找到一种优雅的方法来创建基于queryset的方法,其结果会根据参数而变化
我有一个MyEvent类,我想检索元素,或者是所有元素,或者是未取消的元素,或者是取消的元素。 我使用了3种不同的方法,但我想简化一下。我用一种方法找到了另一种方法,但我仍然不相信这是最干净的方法。你觉得这个怎么样?还有更好的主意吗
@classmethod
def get_events(cls, my_filter=None):
# Some stuff happens here.
events = MyEvent.objects.filter(... # some filter here)
if my_filter is None:
return events
elif my_filter == "cancelled":
return events.filter(is_cancelled=True)
elif my_filter == "uncancelled":
return events.filter(is_cancelled=False)
else:
raise Exception("Unknown filter value")
我想在这里我必须在views.py中调用get_events()方法,这样我就可以使用一个管理器,但这也是同样的问题
大多数人都希望在ModelManager中看到这种代码。您不需要这样做,但这会使您的代码对其他了解Django的人来说更令人惊讶
要求您指定负数的接口通常令人困惑。例如,在
MyEvent
对象的管理中,您将有一个带红色减号的is_cancelled列。这往往会让人感到不舒服;-)您可以在界面中通过适当命名参数来解决这一问题:这也使逻辑变得更短/更简单
相关问题 更多 >
编程相关推荐