CRM--admin组件
admin组件使用
1、创建一个Django项目
2、在models里面创建表
class Publish(models.Model):
name = models.CharField(max_length=32)
email = models.EmailField()
addr = models.CharField(max_length=64) 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(models.Model):
title = models.CharField(max_length=32)
publishDate = models.DateField()
price = models.DecimalField(max_digits=6, decimal_places=2)
publsher = models.ForeignKey(to="Publish", on_delete=models.CASCADE)
authors = models.ManyToManyField(to="Author") def __str__(self):
return self.title
3、生成这些表
python manage.py makemigrations
python manage.py migrate
4、 创建一个超级用户
python manage.py createsuperuser
5、浏览器输入 127.0.0.1:8000/admin ,用超级用户登录,就可以进入界面
使用管理工具
1、构建基本表
在admin.py文件下操作
from django.contrib import admin
from app01 import models
from app01.models import Book, Publish, Author # 应用模块 # Register your models here. class BookConfig(admin.ModelAdmin):
list_display = ["title", "publishDate", "price", "publsher"] # 定义显示内容 class PublishConfig(admin.ModelAdmin):
list_display = ["name", "email", "addr"] class AuthoConfig(admin.ModelAdmin):
list_display = ["name", "age"] admin.site.register(Book, BookConfig) # 注册页面
admin.site.register(Publish, PublishConfig)
admin.site.register(Author, AuthoConfig)

ModelAdmin中的可定制功能
1. list_display,列表时,定制显示的列。
默认只显示一列,可以自定义显示多列
class BookConfig(admin.ModelAdmin):
list_display = ["title", "publishDate", "price", "publsher"] # 定义显示内容,不能显示多对多
2. list_display_links,列表时,定制列可以点击跳转。
list_display_links = ["name", "email", "addr"]
3、定制多对多的列
class BookConfig(admin.ModelAdmin):
def show_author(self, obj):
return ' | '.join([obj.name for obj in obj.authors.all()])
# obj.authors.all() 拿到一个Authors表的QuerySet,用列表推导式拿到name字段,用join进行字符串拼接
list_display = ["title", "publishDate", "price", "publsher", "show_author"] # 定义显示内容

4、搜索框
search_fields = ["title", "price"]
5、定义action里面的函数
分三步
def func(self, request, queryset): # 1、定义一个函数,queryset接收的是勾选的对象
queryset.update(price=0) func.short_description = "重置价格为0" # 2、给这个函数命名,“价格初始化”
actions = [func] # 3、 第三部就这么写
6、 分级过滤 (类似淘宝:“裤子,休闲,100-200,深圳发货” 多重分类筛选)
list_filter = ["publsher", "price", "state"]
CRM--admin组件的更多相关文章
- day 65 crm(2) admin源码解析,以及简单的仿造admin组件
前情提要: crm中的admin组件重写. 一:admin的autodiscover 作用:实现扫面该项目中的所有的admin 1:执行顺序-> 按照注册的顺序执行 二:单例模式 1:普通案例的 ...
- day 64 crm项目(1) admin组件的初识别以及应用
前情提要: 今天进入项目学习阶段,crm 一个又老又土又实用的入门项目 一:django回顾 二:事前准备 1:首先创建django项目 2:在model中创建数据 from django.db im ...
- Django admin 组件 原理分析与扩展使用 之 sites.py (一)
一 . 前言 Django 提供了admin 组件 为项目提供基本的管理后台功能(对数据表的增删改查). 本篇文章通过 admin源码 简单分析admin 内部原理 ,扩展使用方式,为以后进行定制和自 ...
- Django-CRM项目学习(一)-admin组件
开始今日份整理 1.admin组件使用 1.1 创建django项目以及开启APP01 略 1.2 创建类 使用django自带的sqlite3的小型文件型的数据库 注:使用sqlite3类型的数据库 ...
- Django admin组件使用
ADMIN 组件 介绍 admin 组件实现了更方便的WEB后台数据管理方式 settings.py 中第一个组件就是 : INSTALLED_APPS = [ 'django.contrib.adm ...
- Django admin组件源码流程
admin 组件 Django 自带的用户后台组件 用于用户便携的操作 admin 组件核心 启动 注册 设计url 启动核心代码 每个app 通过 apps.py 扫描 admin.py 文件 并执 ...
- python框架之Django(13)-admin组件
使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLED_APPS ...
- admin组件详解
admin组件详解 先根据admin组件启动流程复习下django项目启动至请求过来发生的事 1将admin组件注册进app 2django项目启动 3在运行到定制的admin时执行其下面的apps文 ...
- 模拟admin组件自己开发stark组件之创建篇
admin组件 admin组件为我们提供了针对django管理页面 我们先简短来看下django的admin组件的启动流程,注册流程,url匹配过程 启动注册 1. 扫描所有应用下的注册了应用中的ad ...
- Django 之 admin组件使用&源码解析
admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED ...
随机推荐
- [trouble] error connecting to master 'repl@192.168.1.107:3306' - retry-time: 60 retries: 86400
本文转自https://www.cnblogs.com/hellotracy/articles/5183057.html因为碰到同样的问题所以记录下. 很多时候,就算thread 正在进行,也不代表没 ...
- send_keys results in Expected 【object Undefined】undefined to be a string解决方法:更新selenium+geckodriver+firefox
很久之前在win10上配置的测试环境: python 3.6.1+ selenium 3.3.3+ geckodriver 0.15.0以前run case是正常的,今天去run 同样的case时发现 ...
- ntp服务
ntp服务主要是用于对计算机的时间同步管理操作.时间是对服务器来说是很重要的,一般很多网站都需要读取服务器时间来记录相关信息,如果时间不准,则可能造成很大的影响,对于集群,也需要时间同步. 部署安装N ...
- redis读书笔记
1.redis两种存储机制(持久化) Redis的存储机制分为:Snapshot和AOF 都先将内存存储在内存中. (1)Snapshot当数据累计到一定的阈值,就会触发dump将数据一次性写入到数据 ...
- NodeJS-静态服务器
静态服务器 代码 const http = require('http') const chalk = require('chalk') const conf = require('./config/ ...
- 记一次bond引起的网络故障
本案中3个关键服务器 物理服务器:192.168.6.63,简称P,(Physical server) KVM-VM:192.168.6.150,是物理服务器P上的一个KVM虚机,简称VM NAS:外 ...
- Linux进阶指令(重点)
三.Linux进阶指令(重点) 1.df指令 作用:查看磁盘的空间 #df -h 选项:-h 表示以可读性较高的形式展示大小 2.free指令 作用:查看内存使用情况 #free ...
- python-day12 MySQL、sqlalchemy
@第一节上周回顾没看 @博客day11 https://www.cnblogs.com/alex3714/articles/5950372.html @InnoDB,是MySQL的数据库引擎之一 @S ...
- winreg操作windows注册表详解示例
#coding:utf-8 #=====================================================================#=====本程序演示了WINR ...
- Linux_Ubuntu_C++编程_如何完成一个C++编写,调试,运行。
倘若没装那个软件,系统会提示,根据提示装软件.