django學習筆記:AdminSite界面配置


(一)重定義字段順序:
修改對應應用目錄下的admin.py
class PollAdmin(admin.ModelAdmin):
    fields = ['pub_date', 'question']   # 調整成實際需求的順序
admin.site.register(Poll, PollAdmin)
 
(二)為字段進行分組
class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (' group1', {'fields': ['question']}),     group1
        ('group2', {'fields': ['pub_date']}),     group2
    ]
這里如果group1,group2替換成中文就會出現顯示不了的問題,如何顯示中文是個問題?(python3 已支持中文)
(三)將字段組進行初始隱藏顯示
class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        ('group1', {'fields': ['question']}),    
        ('group2', {'fields': ['pub_date'],  'classes': ['collapse']}),    # 設置為可折疊 
    ]
 
(四)設置子對象並設計成內聯編輯
1、方法1
class ChoiceInline(admin.StackedInline):          # 定義內聯對象
    model = Choice
    extra = 3
    
class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        ('group1', {'fields': ['question']}),    
        ('group2', {'fields': ['pub_date'], 'classes': ['collapse']}),    
    ]
     inlines = [ChoiceInline]                     # 定義子對象的引用            
2、方法2(更加緊湊)
class ChoiceInline( admin.TabularInline):       #  StackedInline or TabularInline
    model = Choice
    extra = 3
(五)設置子對象並設計成內聯編輯    
class PollAdmin(admin.ModelAdmin):
    list_display = ('question', 'pub_date')    # 定義列表中顯示的字段
    fieldsets = [
        ('group1', {'fields': ['question']}),    
        ('group2', {'fields': ['pub_date'], 'classes': ['collapse']}),    
    ]
    inlines = [ChoiceInline]
 
(六)通過函數生成虛擬字段
models.py:
class Poll(models.Model):
    ... ...
    def was_published_recently(self):                # 通過函數定義虛擬字段
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'   # 指定排序字段
    was_published_recently.boolean = True                   # 如果指定了這個字段顯示的時候體現為圖表,比較美觀
    was_published_recently.short_description = 'Published recently?'   # 重定義字段顯示名稱,但是非數字段似乎不生效
admin.py:
class PollAdmin(admin.ModelAdmin):
    list_display = ('question', 'pub_date',  'was_published_recently')
 
問題:這里存在一個問題就模型定義和界面定義出現了混用。
 
(七)增加快速過濾器
class PollAdmin(admin.ModelAdmin):
    ... ... 
     list_filter = ['pub_date']         # 根據 pub_date 進行快速過濾
    ... ...
 
(八)設置對象的默認顯示名稱
class Poll(models.Model):
    ... ...
     def __unicode__(self):
        return self.question
 
(九)為字段增加搜索功能
class PollAdmin(admin.ModelAdmin):
    ... ...
    search_fields = ['question']
    ... ...
 
(十)增加日期下鑽過濾(date  drill down)
class PollAdmin(admin.ModelAdmin):
    ... ...
     date_hierarchy = 'pub_date'
    ... ...
 
 
(***)疑問:
1、如果一個model想包裝成不同的界面該如何操作?
2、中文顯示?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM