Override Django Admin URLs for Specific Model?

后端 未结 3 1535
一生所求
一生所求 2021-02-15 20:30

First a little background:

I have an Event model that has various event_types. I want to break one of those event types, \'Film\', into it\'s o

3条回答
  •  半阙折子戏
    2021-02-15 21:15

    You could also subclass ChangeList and override the url_for_result() method to customise change urls, (learned from another answer), e.g.:

    from django.contrib.admin.views.main import ChangeList
    
    class FooChangeList(ChangeList):
        def url_for_result(self, obj):
            return '/foos/foo/{obj.pk}/'
    
    class FooAdmin(admin.ModelAdmin):
        def get_changelist(self, request, **kwargs):
            return FooChangeList
    

    Adapted example for the question:

    from django.contrib.admin.views.main import ChangeList
    from django.urls import reverse
    
    class FilmAdmin(admin.ModelAdmin):
        def get_changelist(self, request, **kwargs):
            class FilmChangeList(ChangeList):
                def url_for_result(self, obj):
                    return reverse('admin:events_event_change', args=(obj.pk, ))
            return FilmChangeList
    

提交回复
热议问题