Django_Admin

创建Django_Admin 管理账户

D:\github\Django_Aadmin>python manage.py createsuperuser
Username (leave blank to use 'dpad'): root
Email address:
Password: # 密码有复杂度要求
Password (again):
Superuser created successfully.

添加表到 Django_Admin 中进行管理

from django.contrib import admin
from app01 import models # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

设置显示为 正常名而非 UserInfo object

1.在创建表的时候,添加__str__(self)

class UserInfo(models.Model):
"""
用户表
"""
username = models.CharField(max_length=32)
email = models.EmailField(max_length=32)
dp = models.ForeignKey(to="Department") def __str__(self):
return self.username

定制当前列表页面,显示哪几列数据admin.py 文件中

from django.contrib import admin
from app01 import models # 方法一
class UserInfoConfig(admin.ModelAdmin):
# 定制当前列表页面,显示哪几列数据
list_display = ["username", "email", "dp"]
# list_display_links = ["email"] # 设置 可点击 <a> 标签在哪个 字段上
# 继承定义的 UserInfoConfig 类
admin.site.register(models.UserInfo, UserInfoConfig) # 方法二
@admin.register(models.UserInfo) # 通过装饰器实现
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp") # 第一个参数可以是列表

自定义编辑列

1.定义编辑列的函数值

from django.contrib import admin

from app01 import models

@admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"] def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除"

自定义分组功能

from django.contrib import admin
from app01 import models @admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"] # ##分组查询 过滤器
list_filter = ["dp"] def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除" # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

自定义指定的列,处于可修改状态

from django.contrib import admin
from app01 import models @admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"]
list_filter = ["dp"] # 时刻处于可修改状态,但该列不能处于可点击<a> 标签状态
list_editable = ('username',) def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除" # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

自定义指定的列,可用于模糊查询(出现搜索框)

from django.contrib import admin
from app01 import models @admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"]
list_editable = ('username',)
list_filter = ["dp"] # 可用于模糊查询的列
search_fields = ["username", "email",] def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除" # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

定义编辑页面 上下都有可点击保存按钮

from django.contrib import admin
from app01 import models @admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"]
list_filter = ["dp"]
search_fields = ["username", "email",] # 定义编辑页面 上下都有可点击保存按钮
save_on_top = True def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除" # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

定义选中动作,批量执行操作

from django.contrib import admin

from app01 import models

@admin.register(models.UserInfo)
class UserInfoConfig(admin.ModelAdmin):
list_display = ("username", "email", "dp", "edit", "remove")
list_display_links = ["edit", "remove"]
list_filter = ["dp"]
search_fields = ["username", "email",]
save_on_top = True
# fields = ('username',"email") def edit(self, obj):
return "编辑" def remove(self, obj):
return "删除" # 定制Action行为具体方法
def func(self, request, queryset):
print(self, request, queryset)
print("可以拿到选中的 ID 值:", request.POST.getlist('_selected_action')) id_list = request.POST.getlist('_selected_action')
# 数据库操作,删除选中的 id 数据
# models.UserInfo.objects.filter(id__in=id_list).delete() func.short_description = "自定义删除选中"
actions = [func, ] # 会触发执行 func 函数 # 添加 Department 表到 Django_Admin 管理
admin.site.register(models.Department)

参考:http://www.cnblogs.com/wupeiqi/articles/7444717.html

Django_Admin操作的更多相关文章

  1. Django_admin组件

    1.Django_admin组件的意义 作者:Eric 微信:loveoracle11g 新建Django项目bms图书管理系统 App为book book/models.py添加表关系 from d ...

  2. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  3. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  4. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  5. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  6. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  7. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  8. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  9. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

随机推荐

  1. 关于Jonathan S. Weissman与RIT(罗切斯特理工学院,位于纽约)

    信息来源于:edx平台的 RITx: CYBER501xCybersecurity Fundamentals  课程的介绍(https://courses.edx.org/courses/course ...

  2. macbook install mysql

    安装Homebrew,详细步骤参见Homebrew官网. brew doctor确认brew在正常工作. brew update更新包. brew install mysql 安装mysql.log如 ...

  3. 【运维】虚拟机如何安装CentOS

    Centos是Linux发行版本之一. 接下来说说,如何在虚拟机上面安装Centos 1,创建虚拟机的过程本文就不再赘述,相信读者可以自己探索出来. 2,创建好一个空白的虚拟机之后,会看到一个编辑虚拟 ...

  4. 关于nginx服务器上传限制

    nginx的上传参数问题,需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中无法log到访问的.修改了php.ini文件如下:参数 设置 说明fi ...

  5. C++怎么实现线程安全

    muduo库学习笔记1-C++多线程系统编程 网上都说这本书很适合初学者入门学习, 我今天开始准备从头再来; 第一章线程安全的对象管理 对象的生与死不能由对象自身拥有的mutex(互斥器)来保护; 如 ...

  6. c中perror函数

    写代码这么久,竟然很少用到perror函数,忘记了其强大的功能. 所在头文件: #include<stdio.h> 函数定义: void perror(const char *str); ...

  7. 关于flock

    昨天在研究dropbear实现时,看到初始化脚本/etc/init.d/dropbear中有关于文件锁lock的内容,如下: lock /tmp/.switch2jffs    mkdir -p /e ...

  8. 使用Fiddler进行手机端抓包

    1.手机和电脑在同一局域网 2.在电脑上查看ip地址 3.如果是需要抓取https,则需要在浏览器中输入http://xxx.xxx.x.xxx:8888(第二部查到的ip地址 + Fiddler 的 ...

  9. Laravel 5.2错误-----Base table or view not found: 1146 Table

    报出这个问题,我想就是数据库表名不对导致的. 为什么呢?感觉laravel太强大了,很专业的感觉. 因为它对单词命名的单复数区分的很清楚吧.laravel会自动的将模型名自动替换成名称的复数形式,然后 ...

  10. Ajax 执行顺序

    jQuery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...