Django(part2)

本文介绍如何使用Django的Admin站点功能来定制管理界面,包括创建超级用户、注册模型、自定义表单布局、添加内联对象及增强管理页功能。
  1. admin site:django自带了admin site,我们需要创建能访问site的用户
    #以交互的方式创建超级用户
    manage.py createsuperuser
  2. 如果要把model加到admin site,需要在polls/admin.py中执行如下命令:
    from django.contrib import admin
    from polls.models import Question,Choice
    
    admin.site.register(Question)
    admin.site.register(Choice)
    然后可以在site中看到polls的model
    Django admin index page, now with polls displayed
  3. 打开admin site的model,会有一个默认form显示model的成员,
    Editing form for question object
    如果想自定义form可以使用如下代码:
    #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)
    form的布局将会变为:
    Fields have been reordered
    如果有许多fields,可以将form按field set进行划分,collapse指定这个fieldset初始是收缩的,点show可以展开,如下图Text是一个fieldset,Date information是一个fieldset
  4. from django.contrib import admin
    from polls.models import Question
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            ('Text',  {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
    image
  5. 添加关联对象,如下图,
    admin10
    django知道ForeignKey对象应该从select box中选择,本例中时选择Question model,如果想连续添加多个Choice对象,可以更改admin.py代码,
    #polls/admin.py
    
    from django.contrib import admin
    from polls.models import Choice, Question
    
    class ChoiceInline(admin.StackedInline):
        model = Choice
    #extra 是添加的数目
        extra = 3

    class
    QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ]
    #这告诉django,Choice model在Question的admin page编辑,添加3个Choice对象
    inlines
    = [ChoiceInline] admin.site.register(Question, QuestionAdmin)
    这样比较占页面空间,
    admin11t
    可以点”Add another Choice”继续添加Choice,新添加的Choice可以删掉,但初始的3个slot不能删。为了节省空间可以使用下列显示方式:
    #使ChoiceInline 继承自admin.TabularInline,其他代码不变
    class ChoiceInline(admin.TabularInline):
    ...
    admin12t
  6. 还可以指定其他属性增加admin page的功能,如:
    #指定model的列名,也就是属性名
    list_display = ('question_text', 'pub_date')
    #指定用于filter的列
     list_filter = ['pub_date']
    #添加search box,使用question_text属性匹配
     search_fields = ['question_text']
    image

 

posted on 2014-09-23 13:51 哨兵 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/phenixyu/p/3988224.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值