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",
        ...)

返回目录

原文地址:https://www.cnblogs.com/superhin/p/12192399.html

时间: 2024-11-10 04:40:25

Django Admin Cookbook-39如何两次向Django管理员添加模型的相关文章

Django Admin Cookbook 中文版

英文原版 链接 http://books.agiliq.com/projects/django-admin-cookbook/en/latest/ Django Admin Cookbook-如何定制和使用Django Admin管理后台 这是一本关于如何使用和定制Django Admin管理后台的书,它采用了我们所回答的,大约40个常见问题和基本任务的方式编写. 这些章节基于一组通用Django模型来讲解,你可以在此处详细阅读(本书中使用的模型). 简单的说,我们建立了两个Django应用,分

Django Admin Cookbook-24如何从两个不同的模型创建一个Django Admin后台页面

24.如何从两个不同的模型创建一个Django管理员? Hero模型外联到Category,因此你可以从Hero管理页面中选择一个Category对象.如果还希望能够从Hero管理页面创建及修改Category对象,则可以更改HeroAdmin管理模型,并自定义 save_model行为. class HeroForm(forms.ModelForm): category_name = forms.CharField() class Meta: model = Hero exclude = ["

修改django admin 字段中文名的两种方式

使用django admin 显示字段自定义def的时候 默认会显示成函数名称,使用一下方法可自定义显示名称 第一种 class TemplateRequestLog(models.Model): templateApp = models.ForeignKey(TemplateApp, verbose_name="模板名称", on_delete=models.CASCADE) requestUrl = models.URLField(verbose_name="请求路径&q

Django -->admin后台(后台管理可以直接往数据库添加数据)

一.使用pymysql时,必须加这两行(#如果使用mysql的数据库,请进行伪装 pymysql伪装为MySQLdb) import pymysqlpymysql.install_as_MySQLdb() #如果使用mysql的数据库,请进行伪装 pymysql伪装为MySQLdb 二.编辑数据库内容 (路径:/学习/接口自动化/mjz/user/models.py) from django.db import models # Create your models here. class Ca

Django Admin Cookbook-35如何使用带有大量对象的FK管理模型

35.如何使用带有大量对象的FK管理模型? 你可以通过如下代码创建大量Category对象: categories = [Category(**{"name": "cat-{}".format(i)}) for i in range(100000)] Category.objects.bulk_create(categories) 现在,Category拥有超过100000个对象,当您进入Hero修改页面是时,类别字段将是一个包含100000个选择下拉列表.这将使页

Django admin操作

  无名小妖     昵称:无名小妖园龄:1年6个月粉丝:22关注:1 +加关注 搜索 常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 我的标签 Python(1) python3(1) 随笔分类 python3(171) zabbix(10) 前端(5) 算法(9) 随笔档案 2018年2月 (9) 2018年1月 (20) 2017年12月 (2) 2017年11月 (1) 2017年9月 (14) 2017年8月 (6) 2017年7月 (7) 2017年6月 (58) 201

【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题

配置Django Admin,关于如何启用请参考Django官方文档<Activate the admin site>.但是我在配置过程中登录http://example.com/admin后台时出现样式表丢失的问题,比如说界面变成了这样: 上网搜索了不少文档,多是Apache环境下的解决方案,我配置的是Nginx服务器,所以根据Apache的解决提示进而摸索办法,最终要解决这个问题我这里总结有3步(假设已经配置好admin登录系统): 1. 修改settings.py中STATIC_ROOT

Django admin.py

介绍 django amdin是django提供的一个后台管理页面,通过Web来实现对数据的操作,而使用django admin 则需要以下步骤: 创建后台管理员 配置url 注册和配置django admin后台管理页面 创建后台管理员 在命令行中输入: python manage.py createsuperuser 配置URL 根urls.py,一般会默认创建为:admin/ from django.contrib import admin from django.urls import

Django Admin后台管理功能使用(学习版)

一.前言: 在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin urlpatterns = [    url(r'^admin/',admin.site.urls), ] 上边看到导入的admin模块 二.主要功能: 功能1:提供数据库管理功能 基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查 功能2:二次开发 基于该模块的数据管理功能,可以二次定制一些实用的功能. 三