Django项目开发举例之应用的管理界面(3)
1.创建一个管理员账户
$ python manage.py createsuperuser
Username (leave blank to use 'chenqianqian'): admin
Email address: qianqian.chen@longleding.com
Password:
Password (again):
Superuser created successfully.
$ python manage.py runserver 8080
Performing system checks...
System check identified no issues (0 silenced).
April 18, 2017 - 08:51:56
Django version 1.10.5, using settings 'testproject.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CONTROL-C.
from django.contrib import admin
from .models import Question,Choice
# Register your models here.
admin.site.register(Question)
admin.site.register(Choice)
#---------------------------------------------------------------------------------
from django.contrib import admin
from .models import Question,Choice
# Register your models here.
#将Question表单界面字段顺序重新排列
class QuestionAdmin(admin.ModelAdmin):
fields=['pub_date','question_text']
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)
#----------------------------------------------------------------------------------
无论何时,当你需要修改一个对象的管理选项的话,就按照这样的步骤来做:创建一个模型管理对象(class),然后把该对象(class名)作为第二个参数传入admin.site.register()。
2)划分字段集
$ vi admin.py
#--------------------------------------------------------------------------------------------------------------------
from django.contrib import admin
from .models import Question,Choice
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fieldsets=[
(None, {'fields':['question_text']}),
('Date information',{'fields':['pub_date']}),
]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)
#-------------------------------------------------------------------------------------------------------------------3)为字段集指定HTML样式
$ vi admin.py
#-------------------------------------------------------------------------------------------------------------------
from django.contrib import admin
from .models import Question,Choice
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fieldsets=[
(None, {'fields':['question_text']}),
('Date information',{'fields':['pub_date'],'classes':
'collapse'}),
]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)
#-------------------------------------------------------------------------------------------------------------------
5.添加关联对象
实现创建Question对象的同时可以直接添加一组Choice
#-------------------------------------------------------------------------------------------------------------------
from django.contrib import admin
from .models import Question,Choice
# Register your models here.
#定义Choice样式
class ChoiceInLine(admin.StackedInline):
model=Choice
extra=3
#将Question表单界面字段顺序重新排列
class QuestionAdmin(admin.ModelAdmin):
fieldsets=[
(None, {'fields':['question_text']}),
('Date information',{'fields':['pub_date'],'classes':
'collapse'}),
]
inlines=[ChoiceInLine]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)
#-------------------------------------------------------------------------------------------------------------------
使用admin.StackedInline会发现页面不够紧凑我们可以使用admin.TabularInline方法,这样界面就会紧凑很多