命令行颜色
修改的配置的颜色
-
让应用程序出现在django管理页面中
-
-
1.启用 admin web管理页面
-
1.1 创建管理用户,并设置管理账户、密码和邮箱
-
python manage.py createsuperuser
-
1.2 开启web服务
-
python manage.py runserver 0.0.0.0:8000
-
至此,就可以使用浏览器访问 http://IP:8000/admin 。
-
-
-
2.把应用polls加入到admin web管理页面
-
配置应用的 admin.py ,注册Question数据库模型
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Question
-
-
admin.site.register(Question)
-
-
3.风格
-
-
3.1 自定义管理格式,使得 “Publication date”排序在 “Question text” 前面:
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Question
-
-
class QuestionAdmin(admin.ModelAdmin):
-
fields = ['pub_date', 'question_text']
-
-
admin.site.register(Question, QuestionAdmin)
-
-
3.2 改成多个域样式,使得 “Publication date” 和“Question text” 出现在2个表格中:
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Question
-
-
class QuestionAdmin(admin.ModelAdmin):
-
fieldsets = [
-
(None, {'fields': ['question_text']}),
-
('Date information', {'fields': ['pub_date']}),
-
]
-
-
admin.site.register(Question, QuestionAdmin)
-
-
3.3 想隐去部分内容,要隐去的部分添加 collapse 属性:
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Question
-
-
-
class QuestionAdmin(admin.ModelAdmin):
-
fieldsets = [
-
(None, {'fields': ['question_text']}),
-
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
-
]
-
-
admin.site.register(Question, QuestionAdmin)
-
3.4 增加相关的对象
-
一个 Question 应该有多个Choice,但是管理页面中并没有显示出多个选项。
-
2步解决,第一首先要把Choice像Question一样加入到管理站点中去:
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Choice, Question
-
# ...
-
admin.site.register(Choice)
-
-
完成第一步,会发现Choice出现在管理站点中了,它的 Question 域是一个选择下拉框,
-
django对ForeignKey在管理站点中表现出来是以选择框的形式。这里,只有一个问题可以选择。
-
第二步可以通过Question域旁边的+按钮添加新的投票项,但并不高效;
-
更好的方式是,移除Choice在管理站点的注册,然后重新编辑模型中Question的注册代码,把Choice加进去:
-
polls/admin.py
-
from django.contrib import admin
-
from polls.models import Choice, Question
-
-
-
class ChoiceInline(admin.StackedInline):
-
model = Choice
-
extra = 3
-
-
-
class QuestionAdmin(admin.ModelAdmin):
-
fieldsets = [
-
(None, {'fields': ['question_text']}),
-
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
-
]
-
inlines = [ChoiceInline]
-
-
admin.site.register(Question, QuestionAdmin)
-
-
这样,Choice内容不再和Question同级出现,而是出现在Question内部,并且每次默认打开Question编辑页面都会出现3个新增内容版块。
-
如果新增Questiion的话,默认也会出现3个新的Choice选项添加。
-
-
3.5 改变显示样式
-
-
另,Choice 域在页面中占据空间太大,django有制表的方式来显示内部相似的对象,编辑管理配置中ChoiceInline 那行,
-
polls/admin.py
-
class ChoiceInline(admin.TabularInline):
-
#...
-
使用TabularInline 而不是StackedInline可以让有关的对象更紧凑、基于表格式展现出来。
-
-
3.6 自定义管理改变列表
-
django默认显示每个对象的str()值,如果加上每个域,使用list_display管理选项,每个域都会在页面中并列出来。
-
polls/admin.py
-
#...
-
list_display = ('question_text','pub_date','was_published_recently')
-
-
添加之后,Question 也会显示出 发布时间以及是否最近发布的信息。
-
-
4.排序
-
-
可以点击每列顶部来排序查看,但 was_published_recently 顶部不支持,因为它的属性方法是不可排序的。
-
但也可以为它们定义显示样式,详细 https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display :
-
class Question(models.Model):
-
# ...
-
def was_published_recently(self):
-
return self.pub_date >= timezone.now() - 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 增加改进Question过滤功能,pub_date 是DateTimeField类型值,django提供 “Any date,” “Today,” “Past 7 days,” “This month,” “This year”选项。
-
polls/admin.py
-
#...
-
list_filter = ['pub_date']
-
5.搜索
-
为 question_text 添加搜索功能,使用的是 like 进行匹配:
-
polls/admin.py
-
#...
-
search_fields = ['question_text']
-
-
6.更多参考
-
改变分页显示:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_per_page
-
搜索框:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields
-
过滤:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
-
时间划分:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.date_hierarchy
-
列的头部排序:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.date_hierarchy
阅读(1677) | 评论(0) | 转发(0) |