https://www.cnblogs.com/yuanchenqi/articles/6083427.htm

https://www.cnblogs.com/haiyan123/p/8034430.html

Django admin :关于数据库的一个后台管理工具

  admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,

它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。

如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项

LANGUAGE_CODE = 'en-us'  #LANGUAGE_CODE = 'zh-hans'

一  认识ModelAdmin

管理界面的定制类,如需扩展特定的model界面需从该类继承。

二 注册medel类到admin的两种方式:

<1>   使用register的方法

admin.site.register(Book,MyAdmin)

  <2>   使用register的装饰器

@admin.register(Book)

三 掌握一些常用的设置技巧

  • list_display:     指定要显示的字段
  • search_fields:  指定搜索的字段
  • list_filter:        指定列表过滤器
  • ordering:       指定排序字段
from django.contrib import admin
from app01.models import *
# Register your models here. # @admin.register(Book)#----->单给某个表加一个定制
class MyAdmin(admin.ModelAdmin):
list_display = ("title","price","publisher")
search_fields = ("title","publisher")
list_filter = ("publisher",)
ordering = ("price",)
fieldsets =[
(None, {'fields': ['title']}),
('price information', {'fields': ['price',"publisher"], 'classes': ['collapse']}),
] admin.site.register(Book,MyAdmin)
admin.site.register(Publish)
admin.site.register(Author)

创建超级管理员

python manage.py createsuperuser

登陆admin

from django.db import models

# Create your models here.

class Book(models.Model):
name = models.CharField(max_length=32)
price = models.IntegerField()
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author") def __str__(self):
return self.name class Publish(models.Model):
name = models.CharField(max_length=32)
city = models.CharField(max_length=32) def __str__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField() def __str__(self):
return self.name # class Book_Author(models.Model):
# book = models.ForeignKey("Book", on_delete=models.CASCADE)
# author = models.ForeignKey("Author", on_delete=models.CASCADE)

models

admin.py

from django.contrib import admin
from app import models
# Register your models here. admin.site.register(models.Book)
admin.site.register(models.Publish)
admin.site.register(models.Author)

自定义admin样式

admin.py

from django.contrib import admin
from app import models
# Register your models here. class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date') admin.site.register(models.Book,BookAdmin)
admin.site.register(models.Publish)
admin.site.register(models.Author)

注意:list_display不可以加多对多的关系

此时price,pub_date不可以直接在页面上edit,需要点击书名进入修改页面,若想直接修改,需要再加一个字段

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')

增加字段选择author, filter_horizontal

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)

list_per_page

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2

search_fields

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')

list_filter

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')

verbose_name

class Book(models.Model):
name = models.CharField(max_length=32,verbose_name="姓名")
price = models.IntegerField("价格")
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author")

ording

class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
# list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')
ordering = ('-price',) # 加"-"倒序

Django(九)admin相关知识的更多相关文章

  1. Django的admin相关

    自定义admin展示的内容 根据之前已经创建好了的models from django.db import models class Person(models.Model): name = mode ...

  2. Django restfulframework 开发相关知识 整理

    目录 目录 前言 前后端分离 实现前后端分离的方法 前后端分离带来的优点 RESTful十大规范 协议规范 域名规范 版本表示规范 url使用名词 http请求动词 过滤条件 状态码 错误信息 请求方 ...

  3. 实战分享丨MySQL 与Django版本匹配相关经验

    摘要:关于MySQL 与Django版本匹配相关知识的经验分享. run: (env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python ...

  4. Django【第28篇】:Django Admin的相关知识

    Django Admin的相关知识 一.面向对象复习 1.类的继承 class Base(object): def __init__(self,val): self.val = val def fun ...

  5. 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识

    ---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...

  6. 08/27 Django admin相关

    一.django-admin的简单回顾: admin: Django的后台数据管理的web版本 1.admin a:models.py - 创建表 b:admin.py - 注册表    admin. ...

  7. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  8. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  9. 【django之admin,单例模式】

    一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...

随机推荐

  1. 《Tensorflow从入门到精通》

    第一 开发环境搭建 1. tensorflow的环境搭建 windows下安装cpu版tensorflow: pip install tensorflow 在ubuntu上安装gpu版tensorfl ...

  2. python易混易乱(2)

    字符串切割成列表: 以str为分隔符切片mystr,如果maxsplit有指定值,则仅分割maxsplit个字符串,得到maxsplit个字符串的列表 利用字符串的split() 方法 >> ...

  3. Gitlab中README.MD编写格式模板

    README.MD文件 格式: 源码: # Hbase组件 ## Maven依赖 ``` <dependency> <groupId>catf</groupId> ...

  4. spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例

    创建 web项目 配置pom.xml文件   ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 ...

  5. 由 POST 400 错误拔出来的萝卜

    缘起 前段时间遇到扫描问题,好不容易拿到了扫描出来的数据,结果调用接口时弹了个 400(Bad request) 给我,匆匆找了点资料修补上线后,忐忑的心也可以安分点.然后,顺着这个 400 的萝卜, ...

  6. jqprint控件使用

    /*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license //@ sourceMappingURL ...

  7. mysql语句-DML语句

    DML语句 DML是指对数据库中表记录的操作,主要包括数据的增删改查以及更新,下面依次介绍 首先创建一张表:: 表名:emp 字段:ename varchar(20),hiredate date ,s ...

  8. Qt QTimer

    QTimer类提供了重复和单次触发信号的定时器. QTimer类为定时器提供了一个高级别的编程接口.很容易使用:首先,创建一个QTimer,连接timeout()信号到适当的槽函数,并调用start( ...

  9. GitHub大佬:供计算机学习鉴黄功能的图片数据库

    ps:学无止境 想要构建一套鉴黄系统,必须有大量的真实图片供计算机进行学习,以便于区分开正常图片和黄色图片. 近期有位加拿大程序员在Github上传了图片列表,里面包含了大量图片地址可以供计算机进行学 ...

  10. BZOJ1150[CTSC2007]数据备份Backup——模拟费用流+堆+链表

    题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游 ...