<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Django的admin相關

       自定義admin展示的內容

      根據之前已經創建好了的models

      from django.db import models
      class Person(models.Model):
          name = models.CharField(max_length=64, unique=True)
          age = models.IntegerField()
          birthday = models.DateField()
          gender_choices = ((u'male', ''), (u'female', ''))
          gender = models.CharField(max_length=6, choices=gender_choices, default='male')
          blog_url = models.URLField(verbose_name="網址")
          email = models.EmailField(help_text="寫入一個類似123@qq.com的格式")
          host = models.GenericIPAddressField(null=True, blank=True)
          def __str__(self):
              return self.name
          class Meta:
              verbose_name_plural = '個人信息'
      models.py

        配置admin.py,自定義要展示的內容

      • 第一種:通過繼承ModelAdmin類來定義admin里的內容。ModelAdmin類是admin接口中model的表現形式
      from django.contrib import admin
      from .models import Person
      class Person_Display(admin.ModelAdmin):
          list_display = ("name", "birthday", "gender", "blog_url", "email", "host")   # 要顯示的字段
      admin.site.register(Person, Person_Display)
      • 第二種:也可以使用@admin.register裝飾器注冊ModelAdmin
      from django.contrib import admin
      from .models import Person
      
      @admin.register(Person)
      class Person_Display(admin.ModelAdmin):
          list_display = ("name", "birthday", "gender", "blog_url", "email", "host")

      查看admin:

       

      list_display    控制admin的更改列表頁面上顯示的字段。如果沒有設置list_display,只顯示一列,顯示__str__()的對象。

          特殊情況:

      •  如果字段是 ForeignKey,將顯示__str__的對象
      •  不支持 ManyToManyField 類型
      •    可以調用models里面類的方法。將默認HTML轉義輸出,要使html格式生效,需要使用format_html()。 通過short_description 可以給models類的方法加上名字。

               例如: # models.py

      from django.db import models
      from django.utils.html import format_html
      
      class Person(models.Model):
      .........
          gender_choices = (('male', ''), ('female', ''))
          gender = models.CharField(max_length=6, choices=gender_choices, default='male')
          def colored_gender(self):
              if self.gender == 'male':
                  return format_html('<span style="color: green;">男生</span>')
              else:
                  return format_html('<span style="color: red;">女生</span>')    
      colored_gender.short_description = "性別" #可以通過添加short_description屬性來自定義列的標題

         # admin.py

      from django.contrib import admin
      from .models import Person
      
      @admin.register(Person)
      class Person_Display(admin.ModelAdmin):
          list_display = ("name", "birthday", "blog_url", "email", "host", "colored_gender",)

      list_editable   允許在列表頁面上對字段進行編輯

      list_filter      激活admin列表頁面右側邊欄中的過濾器。

      list_per_page   一頁顯示的項目數,默認為100

      ordering         排序,字段前面加一個- ,表示倒序

      search_fields    啟用列表頁面上的搜索框。如果有外鍵或者多對多關聯,可以通過foreignkey__fieldname搜索。

                                  例如 student 列表里,search_fields = ('school__name',)??梢钥梢酝ㄟ^學校名字搜索學生條目。

      示例:

      from django.contrib import admin
      from .models import Person
      @admin.register(Person)
      class Person_Display(admin.ModelAdmin):
          list_display = ( "name", "birthday", "blog_url", "email", "host", "colored_gender",)       #展示的字段
          list_editable = ('blog_url', )     # 可以在列表頁面編輯
          list_filter = ("name", "birthday")   #右邊導航欄的過濾器
          list_per_page = 3                #一頁顯示的條目
          ordering = ["-birthday", ]      #按生日倒序
          search_fields = ["name", ]     # 搜索欄

      修改一條對象里面的顯示內容:

      filter_horizontal(多對多)  默認在admin某一個對象管理里面,ManyToMany顯示為一個多選框。
                                          增加此選項,允許在選項內進行搜索。未選中和選定的選項并排顯示在兩個框中。

         例如   在student  設置filter_horizontal = ( 'teacher',)   

      ------------------》

      filter_vertical  與filter_horizontal相同,不過是豎排。

      raw_id_fields(外鍵)   默認ForeignKey字段是一個選擇框,為了減小開銷,可以將其改為選擇一個窗口小部件選擇。

            ---------》

      彈出小窗

      更多參考:  https://docs.djangoproject.com/en/2.1/ref/contrib/admin/

       

       添加Admin Action

      如果要同時對許多對象進行相同的更改,那么可以定制admin action,批量操作列表里的對象。

       

      例如,將學生里未注冊的全部改為已注冊。

      # models.py

      from django.db import models
      from django.utils.html import format_html
      class Student(models.Model):
          sname = models.CharField(max_length=64)
          age = models.IntegerField()
          statu_choices = (('registered', u'已注冊'),
                             ('unregister', u'未注冊'),
                             )
          status = models.CharField(choices=statu_choices, max_length=32, default='unregister')
          def __str__(self):
              return self.sname
          def status_color(self):
              if self.status == 'registered':
                  f = format_html( '<span style="padding:2px;background-color:green;">已注冊</span>')
              else:
                  f = format_html('<span style="padding:2px;background-color:red;">未注冊</span>')
              return f
          status_color.short_description = 'status'
      View Code

       # admin.py

      def make_register(modelAdmin, request, queryset): #action函數
          queryset.update(status='registered')  # 修改字段
      make_register.short_description = 'Make register'    # 動作描述
      
      @admin.register(Student) class Student_More_Info(admin.ModelAdmin): actions = [make_register] #添加動作

       1, 寫動作函數。我們需要編寫一個在從admin觸發操作時調用的函數。 Action函數只是帶有三個參數的常規函數??:

                                  當前ModelAdmin,一個HttpRequest表示當前請求,QuerySet包含用戶選擇的一組對象。

       2,添加動作    action=[]

       

      action高級寫法:將action作為ModelAdmin的方法

      因為action和Person對象是緊密耦合的,所以可以將action放到Person_display對象中:

      from django.contrib import admin
      from .models import Person
      @admin.register(Person)
      class Person_Display(admin.ModelAdmin):
          actions = ['change_gender', ]    # action列表里面是字符串,而不是函數
          def change_gender(self, request, queryset):  # modeladmin參數改為self
              queryset.update(gender='female')
          change_gender.short_description = "Mark selected person as  female ^_^~"

       

      posted @ 2019-01-30 16:54  卡布愛學習  閱讀(359)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 狠狠色噜噜狠狠狠888米奇视频| 久久人妻av无码中文专区| 成全我在线观看免费第二季| 国产午夜精品理论大片| 国产精品自在拍首页视频8| 无棣县| 乱人伦人妻精品一区二区| 人妻丝袜无码专区视频网站| av在线中文字幕不卡电影网| 国产午夜精品理论大片| 国产成人综合色就色综合| 免费的很黄很污的视频| 热久久美女精品天天吊色| 怡红院一区二区三区在线| 同仁县| 日本三级香港三级三级人妇久 | 人人妻人人狠人人爽| 精品无人乱码一区二区三区| 亚洲男人第一无码av网站| 18禁视频一区二区三区| 国产精品视频亚洲二区| 欧洲熟妇色xxxx欧美老妇多毛网站| 污污网站18禁在线永久免费观看| 久久精品国产99国产精品澳门 | 久久精品国产88精品久久| 成人午夜电影福利免费| 免费AV片在线观看网址| 国产又爽又黄的精品视频| 欧美人人妻人人澡人人尤物 | 樱花影院电视剧免费| 国产精品一线天在线播放| 精品久久久久久成人AV| 亚洲精品国产中文字幕| 国产熟女丝袜av一二区| 欧美z0zo人禽交另类视频| 五月综合激情婷婷六月| 久久亚洲精品中文字幕馆| 成在线人免费| 亚洲av高清一区二区三| 99久久精品国产一区二区蜜芽| 国产精品激情|