Django Admin Cookbook-39如何两次向Django管理员添加模型
39.如何向Django Admin后台中添加两个同样的模型?
你需要将添加两个Hero模型Admin后台中,一个作为常规管理使用,一个作为只读使用(某些用户可能只会看到只读页面)。
如果你尝试两次注册相同的模型:
admin.site.register(Hero) admin.site.register(Hero)
将显示如下报错:
raise AlreadyRegistered('The model %s is already registered' % model.__name__)
解决方案是,继承Hero模型并使用ProxyModel代理模型。
# In models.py class HeroProxy(Hero): class Meta: proxy = True ... # In admin.py @admin.register(Hero) class HeroAdmin(admin.ModelAdmin, ExportCsvMixin): list_display = ("name", "is_immortal", "category", "origin", "is_very_benevolent") .... @admin.register(HeroProxy) class HeroProxyAdmin(admin.ModelAdmin): readonly_fields = ("name", "is_immortal", "category", "origin", ...)