要實現自定義過濾器,要繼承django admin提供的******listfilter類來實現自定義過濾器,之後需要把自定義過濾器配置到modeladmin中即可。
******listfilter類提供了兩個屬性和兩個方法來供我們重寫。這兩個屬性為title,paramter_name,兩個方法為lookups,queryset。兩個屬性的作用顧名思義,title用於展示標題,parameter_name就是設定查詢時url引數的名字,比如設定parameter_name='owner_category'查詢分類id為1的內容時,url後面的query部分是?owner_category=1, 此時就可以通過我們的過濾器拿到這個id,從而進行過濾。
兩個方法的作用如下:
lookups:返回要展示的內容和查詢用的id
如下圖:
![在這裡插入描述](
queryset:根據url query的內容返回列表頁資料。
示例**:
class
categoryownerfilter
(admin.******listfilter)
: title=
"分類過濾器"
paramter_name =
'owner_category'
deflookups
(self, request, model_admin)
:return category.objects.
filter
(owner=reqeust.user)
.values_list(
'id'
,'name'
)# lookups用於在側欄顯示過濾的項
defqueryset
(self, request, queryset)
: category_id = self.value(
)if category_id:
return queryset.
filter
(category_id=self.value())
# model中存在category_id這個字段
# 注意這個queryset是列表頁的query也就是它不屬於category模型,假設此例中的列表頁對應的model為category模型
# self.value的值來自lookups設定的id值
return queryset
Django之admin站點管理
站點首頁 將專案裡models.py中的類名以中文顯示?可以在下圖中的位置插入這樣一段 class meta verbose name 房東資訊 verbose name plural 房東資訊 複數時 列表頁屬性django自帶的原始列表頁是長這樣滴 我們想要的頁面長這樣 所以,我們需要在專案裡的...
Django的Admin站點管理
內容發布 負責新增 修改 刪除內容 公告訪問 在專案的根目錄下,執行命令 python manage.py createsuperuser 依次輸入使用者名稱 郵箱 密碼 密碼不能太複雜 修改setting.py language code zh hans time zone asia shangh...
django 表單和admin站點
1.表單 django內建表單的內容,使用forms模組的form類 在單獨的forms.py檔案中建立表單類和建立模型類的方法很像,然後檢視類用到表單,例項物件就可以 form類中內建一些方法,提供我們使用 比如 form bookform request.post post上傳的請求資料,通過自...