美文网首页django
django admin站点管理

django admin站点管理

作者: 陆_志东 | 来源:发表于2018-08-19 22:04 被阅读102次

    创建管理员账户

    python manage.py createsuperuser
    

    注册模型类

    使用admin.site.register(Question)就能注册一个模型类,但这样的是默认的模型,有时候我们需要做一些自定义选项,就需要再添加一个模型管理对象作为第二个参数admin.site.register(Question, QuestionAdmin).

    --polls/admin.py文件
    from django.contrib import admin
    
    from .models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fields = ['pub_date', 'question_text']   --在编辑Question时可以编辑的字段
    
    admin.site.register(Question, QuestionAdmin)
    
    上面代码效果图
    如果想要上面效果图的表单分成多个而不是一个可以使用fieldsets
    polls/admin.py
    from django.contrib import admin
    
    from .models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date']}),
        ]   --在编辑Question时可以编辑的字段
    --fieldsets 中每个元组的第一个元素是字段集的标题
    
    admin.site.register(Question, QuestionAdmin)
    
    上面代码效果图

    给question添加关联的对象choise

    添加的方式一 即默认的注册方式:这种方式效率不是太高,推荐方式二

    polls/admin.py
    from django.contrib import admin
    
    from .models import Choice, Question
    # ...
    admin.site.register(Choice)
    
    上面代码效果图
    注意
    上面效果图Question是一个选择下拉框,对应很多个choise对象,如果你想继续添加choise对象,可以点击右边的加号,点击之后就会弹出一个弹出框让你编辑choise对象,然后点击save保存

    方式二:添加额外的模型管理对象

    polls/admin.py
    from django.contrib import admin
    
    from .models import Choice, Question
    
    
    class ChoiceInline(admin.StackedInline):
        model = Choice
        extra = 3  --指定默认出现几个空白的choise编辑栏,且这三个默认的编辑栏无法被删除,即始终保持3个空白栏
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]   --在编辑Question时可以编辑的字段
        inlines = [ChoiceInline]
    
    admin.site.register(Question, QuestionAdmin)
    
    上面代码效果图

    在现有的三个Choice的底部,你会发现一个“Add another Choice”的链接。 如果你点击它,就会增加一个新的空白Choice。 如果你想移除一个新增加的空白Choice,可以点击其右上角的X。 请注意,你无法移除那最初的三个空白Choice, 下面的图片展示新增加的一个空白Choice:


    image

    如果你觉得上面图片那样的按行显示,太占空间,可以使用按行列表格的方式显示,做法就是更改模型管理对象继承的父类即可,将StackedInline父类换为TabularInline父类

    image

    设置模型类对象的显示(上面的操作是编辑模型类的选项,下面是展示模型类的选项)

    默认地,Django显示每个对象的str()返回的内容,即默认是返回python类的内建方法__str__()方法的返回值

    image
    我们可以使用list_display属性来扩充对象的显示字段,增加信息的内容展示
    polls/admin.py
    class QuestionAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question_text', 'pub_date', 'was_published_recently')
    
    image

    你也可以添加一个过滤器list_filter来筛选出哪些对象可以显示

    class QuestionAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question_text', 'pub_date', 'was_published_recently')
        list_filter = ['pub_date']
    
    image

    也可以添加一个搜索功能search_fields

    class QuestionAdmin(admin.ModelAdmin):
        # ...
        list_display = ('question_text', 'pub_date', 'was_published_recently')
        list_filter = ['pub_date']
        search_fields = ['question_text']
    

    相关文章

      网友评论

        本文标题:django admin站点管理

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