django 表单验证的字段使用choice,包含html代码,如何在admin表单中正常显示?以前使用0

第三方登录:Django学习系列(四)——编写第一个应用part3_-IT行业第一站
Django学习系列(四)——编写第一个应用part3_Admin
Django学习系列(四)——编写第一个应用part3_Admin
标题:Django学习系列(四)——编写第一个应用part3_Admin
Django内置了Django后台管理界面,方便管理者进行添加和删除网站的内容。
& & 新建的项目系统已经设置好了后台管理功能。
& & 在settings.py文件中,可以看到django.contrib.admin已经加入INSTALLED_APPS配置中,Django管理工具必要的三个包django.contrib.auth &&django.contrib.contenttypes & &&django.contrib.sessions 也加入其中。admin访问也配置在URLconf(url.py)中。
使用管理工具
step1:创建一个管理员账户
启动服务器:
打开浏览器,访问http://127.0.0.1:8000/admin/,将看到管理站点的登录界面:
用之前创建的超级用户来登录,可以看到Django管理站点的首页面:
step2:模型管理
可以看到,在管理界面中,能修改groups和users两个对象,但是没有之前添加的模型。
编辑polls/admin.py,Question对象增加管理界面
from django.contrib import admin from polls.models import Question
# Register your models here. admin.site.register(Question) 刷新管理站点首页面:
Questions显示在管理站点首页面上。单击Questions进入议题对象的变更列表,可以对议题对象进行操作。
step3:定制管理界面
创建一个管理模型的对象,然后将它作为admin.site.register()的第二个参数传入。
from django.contrib import admin from polls.models import Question
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date','question_text']
admin.site.register(Question,QuestionAdmin) 可以看到 date字段排在了Question前面:
分割成字段集的形式:
from django.contrib import admin from polls.models import Question
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
{'fields':['question_text']}),
('Date information',{'fields':['pub_date']}),
admin.site.register(Question,QuestionAdmin)
折叠样式:
step4:关联对象
& & 一个Question有多个Choices选项,应在管理界面中将选项显示出来。
& & 增加Choice,内敛方式:
from django.contrib import admin from polls.models import Choice,Question
# Register your models here.
class ChoiceInline(admin.StackedInline):
model = Choice
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
{'fields':['question_text']}),
('Date information',{'fields':['pub_date'],'classes':['collapse']}),
inlines = [ChoiceInline]
admin.site.register(Question,QuestionAdmin) Choice 对象在Question对象管理界面中被编辑。默认提供3个选项的字段空间。
使用TabularInline代替StackedInline,这些相关联的对象会被显示成为紧凑的、基于表格的形式,也就不像上面一样占用大量的屏幕空间啦。
step5:定制列表的管理界面
普通多列显示:
class PollAdmin(admin.ModelAdmin):
list_display = ('question', 'pub_date', 'was_published_recently')
方法属性设置:
在polls/models.py中:
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 = ['pub_date']
搜索功能:
search_fields = ['question_text']
延伸阅读:
热门搜索:
特色栏目:
类别推荐:

我要回帖

更多关于 django admin 定制 的文章

 

随机推荐