【问题标题】:Django custom AdminSite and ModelAdminDjango 自定义 AdminSite 和 ModelAdmin
【发布时间】:2014-06-30 10:49:08
【问题描述】:

我已经用我自己的覆盖了标准的 AdminSite:

project/admin/base.py:

from django.contrib import admin    

class MyAdmin(admin.AdminSite):
    ...    

my_admin = MyAdmin()

并用它注册了一些应用程序的模型: 事实/admin.py:

from django.contrib import admin
from project.admin.base import my_admin
from models import Fact    

class FactAdmin(admin.ModelAdmin):
    fields = ('section', 'description')


my_admin.register(Fact, FactAdmin)

如何让这个模型显示在索引页面上?我不能使用此处所述的自动发现:How to use custom AdminSite class? 该问题中建议的解决方法对我也不起作用,我想让它变得更干净。

文档仅声明

在使用您自己的 AdminSite 实例时确实不需要使用自动发现,因为您可能会在 myproject.admin 模块中导入所有应用程序 admin.py 模块。

我不会在 project.admin 模块中导入每个应用程序模块。 那么有没有办法告诉自定义 AdminSite 注册的模型并将其显示在索引上?

编辑:我已经挂钩了 URL,我看到的是 my_admin,而不是 admin。使用标准管理员,一切正常。下面是project/urls.py的代码:

from django.conf.urls import patterns, include, url

from admin.base import my_admin

urlpatterns = patterns('',
    ...    
    url(r'^admin/', include(my_admin.urls, app_name='admin')),
)

【问题讨论】:

  • 目前显示什么?您是否也更改了您的 url conf (docs.djangoproject.com/en/1.6/ref/contrib/admin/…)?
  • 是的,我已经挂钩了 URL,我在索引页面上看到了“您无权编辑任何内容”的管理页面。
  • 您确定您的网址指向my_admin 而不是admin
  • 是的。我进行了显示代码的编辑。
  • 您确定您的app_name 只是admin 吗?不应该是my_admin吗?

标签: python django


【解决方案1】:

我认为你需要这样做:

from django.contrib import admin  
class MyAdmin(admin.AdminSite):
  ...    

admin.site = MyAdmin()

【讨论】:

  • 这样做后,我在主页上失去了用户。如何让他们回来?
  • 从 django.contrib.auth.models 导入用户 .... .... admin.site.register(User)
猜你喜欢
  • 2011-07-28
  • 2019-04-03
  • 2011-03-04
  • 2020-06-28
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
相关资源
最近更新 更多