• 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"]
  • 相关阅读:
    Keil(MDK) 5 软件安装教程
    JPA 的specification动态查询
    idea 建立JPA项目(二)
    HBase单节点的安装与配置
    【codevs3012+codevs3037】线段覆盖4+线段覆盖5(DP)
    MySQL下载和安装教程
    二、单线程的 JavaScript
    #JS 基础之异步(一)
    JS 基础之: 继承的 六 种实现方式
    源码浅析-Vue3中的13个全局Api
  • 原文地址:https://www.cnblogs.com/echo2019/p/10692093.html
Copyright © 2020-2023  润新知