zoukankan      html  css  js  c++  java
  • 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"]
  • 相关阅读:
    [bzoj1072][SCOI2007][排列perm] (状态压缩+数位dp+排列去重)
    [bzoj2461][BeiJing2011][符环] (括号配对+记忆化搜索+高维dp)
    [bzoj4027][HEOI2015][兔子与樱花] (树形dp思想+玄学贪心)
    [bzoj1925][Sdoi2010][地精部落] (序列动态规划)
    [bzoj1004][HNOI2008][Cards] (置换群+Burnside引理+动态规划)
    [bzoj1003][ZJOI2006][物流运输] (最短路+dp)
    [spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)
    [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)
    [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)
    [模拟赛FJOI Easy Round #2][T3 skill] (最小割+最大权闭合子图(文理分科模型))
  • 原文地址:https://www.cnblogs.com/echo2019/p/10692093.html
Copyright © 2011-2022 走看看