zoukankan      html  css  js  c++  java
  • Django(part2)

    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
  • 相关阅读:
    [luogu4799 CEOI2015 Day2] 世界冰球锦标赛(折半搜索)
    [luogu3230 HNOI2013] 比赛 (搜索+Hash)
    [luogu2317 HNOI2005] 星际贸易 (dp)
    [luogu2414 NOI2011]阿狸的打字机 (AC自动机)
    [bzoj3507 Cqoi2014]通配符匹配 (hash+DP)
    [luogu2054 AHOI2005] 洗牌 (数论)
    bzoj1491 [NOI2007]社交网络
    bzoj1022 [SHOI2008]小约翰的游戏John
    bzoj1088 [SCOI2005]扫雷Mine
    bzoj1295 [SCOI2009]最长距离
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3988224.html
Copyright © 2011-2022 走看看