CRM--admin组件

时间:2024-08-19 11:06:02

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)

CRM--admin组件

 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"] # 定义显示内容

CRM--admin组件

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"]