zoukankan      html  css  js  c++  java
  • Django admin 设置和定制

    models 在 models.py 中定义,每个 model 是一个 class:

    from django.db import models
    class PerformanceData(models.Model):
        name = models.CharField('name', max_length=200, unique=True)
    date = models.DateTimeField('date')

    自定义 object 的显示

    def __unicode__(self): # 如果是 python3 使用 __str__
        return u'%s %s' % (self.name, self.date)

    在 admin.py 中定义 PerformanceDataAdmin 继承 admin.ModelAdmin, 进一步对 model 进行设置:

    class PerformanceDataAdmin(admin.ModelAdmin):
        list_display=('name', 'date') # 显示表格的表头
        list_per_page = 50 # 每页显示 50 条记录
        ordering = ('-name',) # 用 name 属性排序, '-' 表示倒序排列
        list_filter =('name', 'date') # 设置过滤器
        search_fields =('name', 'date') # 设置搜索框中允许搜索的字段
    actions = [add_one_copy,] # 添加一个 action, 需要定义函数 add_one_copy admin.site.site_header
    = 'Test Management' # 设置标题 admin.site.site_title = 'Test Management' # 设置标题 admin.site.register(PerformanceData, PerformanceDataAdmin) # 注册

    设置字段颜色,在 models.py 中定义新的字段如下:

    from django.db import models
    from django.utils.html import format_html
    
    class PerformanceData(models.Model):
        name = models.CharField('name', max_length=200, unique=True)
        date = models.DateTimeField('date')
        def colored_name(self):
            if self.name == '1':
                color_code = 'green'
            else:
                color_code = 'red'
    
            return format_html(
                '<span style="color: #{};">{}</span>',
                color_code,
                self.name,
            )

    在 admin.py 中需要改为

    list_display=('colored_name', 'date') # 显示表格的表头

    更改表头的显示文字

    colored_name.short_description = 'MY_NAME'

    注意,要先为字段在 models.py 中定义一个类似 colored_name 的方法,并设置 short_description,然后在 admin.py 的 list_display 中使用这个新的方法定义。例如:

    class PerformanceData(models.Model):
        name = models.CharField('name', max_length=200, unique=True)
        date = models.DateTimeField('date')
        def short_date(self):
            return self.date
        short_date.short_description = 'MY_DATE'
    list_display=('colored_name', 'short_date') # 显示表格的表头

    为表格添加 actions

    def add_one_copy(modelAdmin, request, queryset):
        add_one_copy.short_description = 'Select and add one copy'
        for i in queryset:
            print(i.date)
    class PerformanceDataAdmin(admin.ModelAdmin):
        actions = [add_one_copy,] # 添加一个 action, 需要定义函数 add_one_copy

    为 model 添加 create 函数,可以调用这个函数增加新的条目

    from django.db import models
    from datetime import *
    
    class PerformanceData(models.Model):
        name = models.CharField('name', max_length=200, unique=True)
        date = models.DateTimeField('date')
        @classmethod
        def create(cls, _name, _date):
            obj = cls(name=_name, date=_date)
            return obj
    obj = PerformanceData.create('hello', datetime(1980,10,11))
    obj.save()
  • 相关阅读:
    QML中的信号和函数
    Hangfire入门(任务调度)
    js 批量设置css样式
    phpstudy配置伪静态的方法
    mysql 文件导入方法总结
    通过配置Mysql参数提高写入速度
    phpmyadmin导入数据库大小限制修改
    易语言入门之一 简介
    判断移动设备、触屏
    Compiler Error Message: CS0016: Could not write to output file 回绝访问
  • 原文地址:https://www.cnblogs.com/weiweifeng/p/8477833.html
Copyright © 2011-2022 走看看