Django adminの設定とカスタマイズ

9024 ワード

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)

はい.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(
            '{}',
            color_code,
            self.name,
        )

はい.pyで変更する必要があります
list_display=('colored_name', 'date') #  

ヘッダーの表示テキストの変更
colored_name.short_description = 'MY_NAME'

フィールドはmodelsにあることに注意してください.pyでcoredのようなものを定義します.nameのメソッドを設定し、short_を設定します.次に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

モデルに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()