【发布时间】:2014-05-22 11:49:36
【问题描述】:
在以下代码中,我可以看到 2 个不同的问题:
这不是 DRY,因为
date__range中的整个逻辑对于两个列表(A 和 B)都是相同的。你会如何解决这个问题?我尝试使用方法作为参数但没有成功,不确定如何实现。get_x_events() 在每一轮循环中都被调用,我猜这效率不高..
类事件(models.Model):
@classmethod
def get_stats(cls, owner, nb_days, offset):
# Building a list with comprehensive list calling the get_A_events() classmethod of the EventA class
list_A = [EventA.get_A_events(owner).filter(
date__range=(
now_day - timedelta(days=offset) - timedelta(days=d),
now_day - timedelta(days=offset) - timedelta(days=d-1))).count() \
for d in range(nb_days)]
# Doing the same with another method of another class
# The logic is exactly the same thought...
list_B = [EventB.get_B_events(owner).filter(
date__range=(
now_day - timedelta(days=offset) - timedelta(days=d),
now_day - timedelta(days=offset) - timedelta(days=d-1))).count() \
for d in range(nb_days)]
return zip(list_A, list_B)
我的模型是这样组织的:
- 类事件(models.Model)
- 类 EventA(Event)
- 类 EventB(Event)
谢谢。
【问题讨论】:
标签: django django-models