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

  3. 打开admin site的model,会有一个默认form显示model的成员,

    如果想自定义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,可以将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']}),
    ]

  5. 添加关联对象,如下图,

    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)

    这样比较占页面空间,

    可以点”Add another Choice”继续添加Choice,新添加的Choice可以删掉,但初始的3个slot不能删。为了节省空间可以使用下列显示方式:

    #使ChoiceInline 继承自admin.TabularInline,其他代码不变
    class ChoiceInline(admin.TabularInline):
    ...

  6. 还可以指定其他属性增加admin page的功能,如:
    #指定model的列名,也就是属性名
    list_display = ('question_text', 'pub_date')
    #指定用于filter的列
    list_filter = ['pub_date']
    #添加search box,使用question_text属性匹配
    search_fields = ['question_text']

Django(part2)的更多相关文章

  1. “全能”选手—Django 1.10文档中文版Part2

    第一部分传送门 第三部分传送门 第四部分传送门 3.2 模型和数据库Models and databases 3.2.2 查询操作making queries 3.3.8 会话sessions 目录 ...

  2. 实战Django:官方实例Part2

    我们接着Part1部分往下讲.我们在part1中启动服务器后,并没有在管理页面中发现新添加的Polls应用,怎么办捏? 7.在管理界面中显示Question 只要注册一下这个应用就可以了.编辑poll ...

  3. django入门-模型-part2

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6511177.html 完全翻译自官方文档 https://docs.djangoproje ...

  4. Django 1.10文档中文版Part2

    目录 2.5 第一个Django app,Part 3:视图和模板 2.5.1 概览 2.5.2 编写更多的视图 2.5.3 编写能实际干点活的视图 2.5.4 404错误 2.5.5 使用模板系统 ...

  5. Django——如何在Django模板中注入全局变量?——part2

    模版中的变量由context中的值来替换,如果在多个页面模版中含有相同的变量,比如:每个页面都需要{{user}},笨办法就是在每个页面的请求视图中都把user放到context中.   from d ...

  6. django with mysql (part-2)

    step01: write a ( views.py ) file vim views.py Insert the below code : step02: configure your ( urls ...

  7. 如何让django方法自动地定期执行

    实现思路:1.首先把需要自动执行的django method写成django command2.将自己定义的django command添加到cron中使用cron服务实现定期执行 Part1 在dj ...

  8. 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...

  9. 实战Django:官方实例Part1

    [写在前面] 撰写这个实战系列的Django文章,是很久之前就有的想法,问题是手头实例太少,一旦开讲,恐有"无米下锅"之忧. 随着对Django学习的深入,渐渐有了些心得,把这些心 ...

随机推荐

  1. windows2003安装

    产品密钥JCDPY-8M2V9-BR862-KH9XB-HJ3HMiis的i386文件夹http://pan.baidu.com/s/1dD0EY6twindows2003的iso映像http://p ...

  2. 切换JDK版本quick

    最近遇到一个小问题,同时做两个项目,jdk版本一个是5,一个是6,我也去网上找了找方法,但是感觉不是特别好用,最后自己通过一些环境变量设置的技巧和一些批处理命令来使得这件事情只需要双击,输入一个数字回 ...

  3. java同步锁的正确使用

    同步锁分类 对象锁(this) 类锁(类的字节码文件对象即类名.class) 字符串锁(比较特别) 应用场景 在多线程下对共享资源的安全操作. 需求:启动5个线程对共享资源total进行安全操作. 同 ...

  4. Android 的永久登陆 与注销登陆

    一.永久登陆 sharedprefrence 存储 userID  以及 password private String FILE = "saveUserNamePwd";//用于 ...

  5. c++的map有关

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字(key),每个关键字只能在map中出现一次,第二个可能称为该关键字的值(value))的数据 处理能力,由于这个特性,它完成有可能 ...

  6. day19-2 生成器,递归函数

    目录 生成器 有关yield的理解 实现range()函数 生成器表达式 递归 思考 斐波那契额 汉诺塔 二分法 生成器 自定义的迭代器 yield关键字: 和return一样,接收值,但不终止函数 ...

  7. Hive 基本操作

    1.创建一个表 (字段表名不加引号‘,分隔符需要加引号) create table t1( id int ,name string ,hobby array<string> ,add ma ...

  8. Vue - vue.js 常用指令

    Vue - vue.js 常用指令 目录: 一. vuejs模板语法之常用指令 1. 常用指令: v-html 2. 常用指令: v-text 3. 常用指令: v-for 4. 常用指令: v-if ...

  9. 紫书 例题8-3 UVa 1152(中途相遇法)

    这道题要逆向思维, 就是求出答案的一部分, 然后反过去去寻找答案存不存在. 其实很多其他题都用了这道题目的方法, 自己以前都没有发现, 这道题专门考这个方法.这个方法可以没有一直往下求, 可以省去很多 ...

  10. Spring中使用Quartz之MethodInvokingJobDetailFactoryBean配置任务

    Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz. Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,i ...