3

my struggleWeekArchiveView의 연속에서 일주일에 페이지를 매기려면 어떻게해야합니까? WeekArchiveView에 페이지 매김을 적용하려면 어떻게해야합니까?

내가 원하는 건

은 다음과 같습니다

  • 이전/다음 주에 사용할 수있는 경우를 알고;
  • 있는 경우 템플릿에 링크를 제공하십시오.

빈 주를 건너 뛰고 싶습니다.

The sourceget_next_day/get_prev_dayget_next_month/get_prev_month 사용할 수 있지만 주 동안 아무것도를 보여줍니다.

답변

3

확실히 재미 있습니다. 물론 MonthMixinget_next_month/get_prev_month 방법을 포함하고 DayMixinget_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) 
+0

정말 도움이되었습니다. 감사. –

+0

제발 도와주세요 [나머지를 알아내는] (http://stackoverflow.com/questions/7665013/how-do-i-paginate-weekarchiveview/7667867#7667867)? 우리는 거의 다 왔는데, 주어진 주 이전에 항목이 없을 때'previous_week'를'None'으로 만드는 깔끔한 방법을 찾고 있습니다. –

+0

죄송합니다. 이것은 내 잘못이었다. 'allow_empty'를'True'로 설정했기 때문에 빈 페이지를 얻었습니다. 다시 한번 고마워! –

2

는 기본으로 chrisdpratt's code 촬영, 나는 next_weekprevious_week와 템플릿을 제공하는 클래스를 만들었습니다.

관련 문제