我正在尝试在Django管理站点中为我的模型创建自定义视图。我为名为ModelAdmin
的模型创建了Document
,如下所示:
from django.http import HttpResponse
from django.urls import path
from django.contrib import admin
from my_app.models import Document
@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path('my-view/', self.admin_site.admin_view(self.my_view))
]
return urls + custom_urls
def my_view(self, request):
return HttpResponse('test')
根据the docs(v2.1),我应该能够使用my_view
访问/admin/my_app/document/my-view
,但是当我尝试访问该URL时,django将我重定向到管理主页,并显示以下警告:
Document with ID "my-view" doesn't exist. Perhaps it was deleted?
因此django似乎看不到我的自定义网址。我想念什么?我该如何使用它?
答案 0 :(得分:2)
这只是URL排序的问题;通用管理员更改视图将首先处理,并且正在捕获您对“我的视图”的请求。您可以通过将URL放在第一位来更改此设置,这是您链接到的示例中实际完成的操作:
return custom_urls + urls