@llplmlyd
        
        2019-04-29T10:35:18.000000Z
        字数 1842
        阅读 1285
    Python
fields = ['pub_date', 'question_text'] # 默认时间在后,经过自定义之后时间被前置
fieldsets = [(None, {'fields': ['question_text']}),('Date information', {'fields': ['pub_date']}),]
Django在admin站点中,自动地将所有的外键关系展示为一个select框
如 question and choice:
from django.contrib import adminfrom .models import Choice, Question# class 部分均是增加的内容;修改继承的类StackedInline可以修改显示的样式class ChoiceInline(admin.StackedInline):model = Choiceextra = 3class QuestionAdmin(admin.ModelAdmin):fieldsets = [(None, {'fields': ['question_text']}),('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),]inlines = [ChoiceInline]# 多一个参数QuestionAdminadmin.site.register(Question, QuestionAdmin)
通常,Django只显示在model中def 了的 str()方法指定的内容。 
要同时显示一些别的内容,可以在admin的响应的class类视图使用list_display属性,它是一个由字段组成的元组,其中的每一个字段都会按顺序显示在“change list”页面上,如下代码展示:
class QuestionAdmin(admin.ModelAdmin):# ...list_display = ('question_text', 'pub_date', 'was_published_recently')
如下显示添加的最后三行,将原本的True/False变成小图标
# polls/models.pyclass Question(models.Model):# ...def was_published_recently(self):now = timezone.now()return now - datetime.timedelta(days=1) <= self.pub_date <= nowwas_published_recently.admin_order_field = 'pub_date'was_published_recently.boolean = Truewas_published_recently.short_description = 'Published recently?'
如下所示,使用 list_filter 属性:
list_filter = ['pub_date']
如下所示,使用 search_fields 属性,列表中:
search_fields = ['question_text']
Django在后台使用的都是SQL查询语句的LIKE语法 
页面还提供分页功能,默认每页显示100条
同样使用Templates的功能,检查:Templates位于与manage.py同等级的目录 
1. 将 \Lib\site-packages\django\contrib\admin\templates\admin 目录下的base_site.html拷贝到templates\admin中 
2. 将{{ site_header|default:_(’Django administration’) }} 都替换为自定义的标题
!所有Django默认的admin模板都可以被重写,类似刚才重写base_site.html模板的方法一样,从源代码目录将HTML文件拷贝至你自定义的目录内,然后修改文件。
Django在一个模型中只允许有一个自增字段,并且该字段必须为主键!
