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"]
原文地址:https://www.cnblogs.com/echo2019/p/10692093.html