美文网首页
官方文档#7-定制管理台

官方文档#7-定制管理台

作者: wangfp | 来源:发表于2017-09-15 15:23 被阅读0次

    1. 管理台表单布局(1)

    # polls/admin.py
    from django.contrib import admin
    
    from .models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
       # 定制表中内容的展示顺序
        fields = ['pub_date', 'question_text']
    
    # 注意在注册时将上边类放在第二个参数位置
    admin.site.register(Question, QuestionAdmin)
    
    image

    2. 管理台表单布局(2)

    # polls/admin.py
    from django.contrib import admin
    
    from .models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
        # 将表单内容分成两块(第一块为命名,第二块命名为'Date information')
        # 每一块保存在一个tuple中
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date']}),
        ]
    
    admin.site.register(Question, QuestionAdmin)
    
    image

    3. 添加关联对象

    • 如果在polls/admin.py中直接注册Choice数据模型,那么该模型在管理台中将以独立的形式显示。使用这种方式对具体Question添加Choice不是很方便。
    • 使用内联形式
    # polls/admin.py
    from django.contrib import admin
    
    from .models import Choice, Question
    
    
    # 除了StackedInline这种内联模式外,Django还提供一种TabularInline的内联模式(每个Choice选项将展示在一行)
    class ChoiceInline(admin.StackedInline):
        model = Choice
        # 显示3个额外的Choice表单
        extra = 3
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
        # 告诉Django该表单有一个内联表单
        inlines = [ChoiceInline]
    
    admin.site.register(Question, QuestionAdmin)
    
    StackedInline
    TabularInline

    4. 定制管理台的Change List

    # polls/admin.py
    class QuestionAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question_text', 'pub_date', 'was_published_recently')
    
    change list

    相关文章

      网友评论

          本文标题:官方文档#7-定制管理台

          本文链接:https://www.haomeiwen.com/subject/xiwssxtx.html