Django admin 设置和定制

Posted code changes the world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

 

以上是关于Django admin 设置和定制的主要内容,如果未能解决你的问题,请参考以下文章

django1.6 admin不能登录

Python学习第136天(Django的admin)

Django防Admin定制插件

django 配置管理后台,出现多个 admin/admin/admin

Django Admin Cookbook 中文版

Django之admin