확실히 재미 있습니다. 물론 MonthMixin
은 get_next_month
/get_prev_month
방법을 포함하고 DayMixin
은 get_next_day
/get_prev_day
방법을 포함합니다. 그러나 YearMixin과 WeekMixin은 모두 해당 정의에서 기능상으로 동등합니다. 장고 팀의 일부를 감독하는 것 같습니다.
나는 당신의 최선의 방법은 하위 클래스라고 생각 WeekArchiveView 또는 BaseWeekArchiveView 중 (당신은 응답 형식을 변경하려면 결국 수 있으며 방법을 다시 구현해야하지 않으려는 경우)와 자신의
get_next_week
/
get_prev_week
방법을 추가 . 그런 다음 하위 클래스에서 상속 받도록하십시오.
DayMixin
메소드의 간단한 수정으로 충분합니다.
class BetterWeekArchiveView(WeekArchiveView):
def get_next_week(self, date):
"""
Get the next valid week.
"""
next = date + timedelta(days=7)
return _get_next_prev_month(self, next, is_previous=False, use_first_day=False)
def get_previous_week(self, date):
"""
Get the previous valid week.
"""
prev = date - timedelta(days=7)
return _get_next_prev_month(self, prev, is_previous=True, use_first_day=False)
def get_dated_items(self):
"""
Return (date_list, items, extra_context) for this request.
Inject next_week and previous_week into extra_context.
"""
result = super(BetterWeekArchiveView, self).get_dated_items()
extra_context = result[2]
date = extra_context['week']
extra_context.update({
'next_week': self.get_next_week(date),
'previous_week': self.get_previous_week(date),
})
return result
이 완벽하게 작동합니다
def get_next_week(self, date):
"""
Get the next valid week.
"""
next = date + datetime.timedelta(days=7)
return _get_next_prev_month(self, next, is_previous=False, use_first_day=False)
def get_previous_week(self, date):
"""
Get the previous valid week.
"""
prev = date - datetime.timedelta(days=7)
return _get_next_prev_month(self, prev, is_previous=True, use_first_day=False)
정말 도움이되었습니다. 감사. –
제발 도와주세요 [나머지를 알아내는] (http://stackoverflow.com/questions/7665013/how-do-i-paginate-weekarchiveview/7667867#7667867)? 우리는 거의 다 왔는데, 주어진 주 이전에 항목이 없을 때'previous_week'를'None'으로 만드는 깔끔한 방법을 찾고 있습니다. –
죄송합니다. 이것은 내 잘못이었다. 'allow_empty'를'True'로 설정했기 때문에 빈 페이지를 얻었습니다. 다시 한번 고마워! –