2011-07-25 16 views
5

私は、Djangoの管理者にカスタムビューを追加する必要があります。これは、特定のモデルの標準ChangeListビューと似ているはずですが、カスタム結果セットがあります。 (私は未満今日、いくつかの日付または他のいくつかの日付を持つすべてのモデルを表示する必要がありますが、これは本当に関係ありません)。私はこれを行うことができますジャンゴ管理 - カスタムチェンジビュー

一つの方法は、これは

問題は、私はsome-urlを結びつける方法がわからないということである...ことを確認します

class CustomAdmin(admin.ModelAdmin): 
    ... 
    def queryset(self, request): 
     qs = super(CustomAdmin, self).queryset(request) 
     if request.path == 'some-url': 
      today = date.today() 
      # Return a custom queryset 
     else: 
      return qs 

のように、管理者queryset方法を使用することです標準のChangeListビュー

答えて

5

だから、あなたはそれが要求されたURLでいたし、それに応じてクエリセットを変更する2のどちらチェックできるようにチェンジビューに行く2番目のURLをしたいですか? ただdjango.contrib.admin.optionsが何を模倣し、ModelAdminのに別のURLを追加します。

は次のようになります。

class CustomAdmin(admin.ModelAdmin): 

    def get_urls(self): 
     def wrap(view): 
      def wrapper(*args, **kwargs): 
       kwargs['admin'] = self # Optional: You may want to do this to make the model admin instance available to the view 
       return self.admin_site.admin_view(view)(*args, **kwargs) 
      return update_wrapper(wrapper, view) 

     # Optional: only used to construct name - see below 
     info = self.model._meta.app_label, self.model._meta.module_name 

     urlpatterns = patterns('', 
      url(r'^my_changelist/$', # to your liking 
       wrap(self.changelist_view), 
       name='%s_%s_my_changelist' % info) 
     ) 
     urlpatterns += super(CustomAdmin, self).get_urls() 
     return urlpatterns 
関連する問題