Django -- Polls - Part 7

2018-03-21  本文已影响0人  liaozb1996

定制 Django Admin

# 类
admin.ModelAdmin
admin.StackedInine
admin.TabularInline

# Model Edit Form
## ModelAdmin
fields = []
fieldsets = [('title', {'fields': [])]
inlines
## Change List
search_fields
list_display
list_filter
# Inline 属性
model 
extra

# 方法属性
field.admin_order_filed # 排序
field.boolean
field.short_description # 标题

步骤:

Model

Model 中 Fields 显示的顺序:fields

# polls/admin.py

from django.contrib import admin
from .models import Question

class QuestionAdmin(admin.ModelAdmin):
    fields = ['pub_date', 'question_text']

admin.site.register(Question, QuestionAdmin)

fieldsets:

# polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
    ('Date information', {'fields': ['pub_date']}), # ('title', {'fileds': []})
    (None, {'fields': ['question_text']}),
    ]
fieldsets

关联外键

Inline

# polls/admin.py

from django.contrib import admin
from .models import Question, Choice

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
    ('Date information', {'fields': ['pub_date']}), # (title, {'fileds': []})
    (None, {'fields': ['question_text']}),
    ]

    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

紧凑的表格形式 TabularInline

# polls/admin.py
class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3
TabularInine

Change List

# polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
    list_display = ('question_text', 'pub_date', 'was_published_recently')
list_display
Model

was_published_recently 添加属性

# polls/models.py
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def was_published_recently(self):
         return timezone.now() - self.pub_date < datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = "Published recently ?"
属性

list_filter

class QuestionAdmin(admin.ModelAdmin):
    list_filter = ['pub_date']

search_fields

class QuestionAdmin(admin.ModelAdmin):
    search_fields = ['question_text']  # 在数据库执行 LIKE
上一篇 下一篇

猜你喜欢

热点阅读