2017-05-22 4 views
0

私はevent-list page(将来の予定)とevent-review page(過去の出来事、アーカイブ)を持っているページに取り組んでいます。django-cms AppHooksのキャッシュを無効にするには?

私はdjango-cms AppHookで作業しています。私は詳細ビューも持っているからです。

イベントの翌日、イベントはイベントリストに表示されなくなり、イベントレビューページに表示されます。しかし問題は、イベントがまだイベントリストページにあることです。

models.py

# Managers 
class EventsManager(models.Manager): 
"""EventsManager.""" 

    def get_all(self): 
     return super(EventsManager, self) \ 
      .filter(is_visible=True) \ 
      .order_by('-date') 

    def get_all_future(self): 
     return super(EventsManager, self) \ 
      .filter(is_visible=True) \ 
      .filter(date__gte=datetime.datetime.now()) \ 
      .order_by('date') 

    def get_all_past(self): 
     return super(EventsManager, self) \ 
      .filter(is_visible=True) \ 
      .filter(date__lt=datetime.datetime.now()) \ 
      .order_by('-date') 

views.py

class EventListView(ListView): 
    template_name = 'event_list.html' 
    queryset = Events.objects.get_all_future() 
    paginate_by = 10 

    @never_cache 
    def dispatch(self, *args, **kwargs): 
     return super(EventListView, self).dispatch(*args, **kwargs) 

class EventArchiveView(ListView): 
    template_name = 'event_archive.html' 
    queryset = Events.objects.get_all_past() 
    paginate_by = 20 

    @never_cache 
    def dispatch(self, *args, **kwargs): 
     return super(EventArchiveView, self).dispatch(*args, **kwargs) 

    def get_context_data(self, **kwargs): 
     context = super(EventArchiveView, self).get_context_data(**kwargs) 
     context['is_arcive'] = True 
     return context 

私は@never_cacheを使用しようとしましたが、イベントは、イベントリストページに残っています。キャッシュの問題だと思いますが、どこから検索を始めるかはわかりません。助言がありますか?

答えて

0

私はちょうど同様の問題があり、それはDjango CMSに関連していませんでした。何らかの理由で生産上だけ問題が発生しました。解決策は、queryset変数を持つクエリセットを定義する代わりに、クラスメソッドget_queryset()を使用することでした。何らかの理由で、私のdjangoアプリケーションをUWSGIで実行していて、sqlクエリがキャッシュされていて、私の日付フィルタリングが私の最初のクエリの日付にこだわられました。

置き換え:

queryset = Events.objects.get_all_past()

で:

def get_queryset(self): return Events.objects.get_all_past()

関連する問題