django xadmin 管理器常用顯示設定
阿新 • • 發佈:2019-02-13
課程管理器:
class CourseAdmin(object):
# 設定列表顯示欄位
list_display = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums','add_time']
# 設定列表查詢欄位
search_field = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums' ]
# 設定列表過濾欄位
list_filter = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums','add_time']
# 設定顯示圖示
model_icon = 'fa fa-check-square'
# 設定欄位可以直接在列表頁修改
list_editable=['desc','degree']
# 設定預設排序
ordering=['-click_nums']
# 設定詳情頁面只讀顯示
readonly_fields=['fav_nums','click_nums']
# 設定詳情頁面不顯示某個欄位
exclude=['add_time']
#自動重新整理列表頁面(秒數)
refresh_times = [3,5]
def queryset(self):
# 過載queryset方法,進行過濾
qs = super(CourseAdmin, self).queryset()
# 只顯示is_banner=True的課程
qs = qs.filter(is_banner=False )
return qs
def save_models(self):
# 在儲存課程的時候統計課程機構的課程數
# obj實際是一個course物件
obj = self.new_obj
# 對當前課程進行儲存,否則統計的課程數會少一個
obj.save()
if obj.course_org is not None:
course_org = obj.course_org
course_org.course_nums = Course.objects.filter(course_org=course_org).count()
course_org.save()
CourseOrg是Course的一個外來鍵
課程機構管理器:
class CourseOrgAdmin(object):
list_display = ['name', 'desc', 'click_num','fav_nums','image','address','city','add_time']
search_fields = ['name', 'desc', 'click_num','fav_nums','image','address','city']
list_filter = ['name', 'desc', 'click_num','fav_nums','image','address','city','add_time']
# 某一個model指向它時,它是以ajax載入的方式來完成的,通過搜尋來進行新增某個欄位,這樣可以避免資料量過大時,把所有資料都載入進來
relfield_style='fk-ajax'
class LessonInline(object):
model = Lesson
extra = 0
class CourseResourceInline(object):
model = CourseResource
extra = 0
#inlines 實現在新增course的同時,在同頁面新增相應的章節與課程資源
class CourseAdmin(object):
inlines = [LessonInline,CourseResourceInline] #增加章節和課程資源