Django custom view into admin page

后端 未结 4 695
夕颜
夕颜 2021-01-31 03:51

I have created a custom view.

How can I insert the view into the admin?

For a normal admin class, we can just simply register it to the admin site:



        
相关标签:
4条回答
  • 2021-01-31 04:07

    The pattern gets a view, not the result of calling the view, i.e.:

    list_urls = patterns('', r'^list/$', self.list_view())
    

    should be

    list_urls = patterns('', r'^list/$', self.list_view)
    

    Also, "list_view" (at this stage) is a view like any other. So it will need to return an HttpResponse object.

    def list_view(self, request):
        return question_list(request)
    

    You're not showing the code for question_list() but I have the suspicion it is not returning an HttpResponse.

    P.S.: If you provided the traceback of the "'function' object is not iterable" exception (you're getting this when visiting "list/" ?) there'd be less guesswork.

    0 讨论(0)
  • 2021-01-31 04:28

    Here's an example of everything needed to add (as of Django 1.6) for a custom page that will be linked to from a button next to the "History" button in the top right of an object's detail page:

    https://gist.github.com/mattlong/4b64212e096766e058b7

    0 讨论(0)
  • 2021-01-31 04:28

    You should override get_urls in you ModelAdmin subclass.

    0 讨论(0)
  • 2021-01-31 04:34

    Based on the information you provided you should check this part of Django's documentation:

    Adding views to admin sites (note: the link is valid for version 1.5 since version 1.3 is not supported anymore - the solution is still valid).

    Then you could check this blog post and this question for some further inspiration and details.


    Based on your example I really don't get why you just don't use a regular ModelAdmin with some filtering options:

    class QuestionAdmin(admin.ModelAdmin):
        list_filter = ('topic',)
    
    0 讨论(0)
提交回复
热议问题