-1
假設如果有一個名爲'Cities'的模型,並且在管理員端有一個過濾器'city_name'來根據城市名稱過濾模型。 默認情況下,django只允許從django管理過濾器中選擇一個城市名稱。 但是我需要在django管理過濾器中選擇多個城市名稱。我該怎麼做。?是多選擇django管理員可能過濾..?
假設如果有一個名爲'Cities'的模型,並且在管理員端有一個過濾器'city_name'來根據城市名稱過濾模型。 默認情況下,django只允許從django管理過濾器中選擇一個城市名稱。 但是我需要在django管理過濾器中選擇多個城市名稱。我該怎麼做。?是多選擇django管理員可能過濾..?
您可以通過繼承django.contrib.admin.SimpleListFilter
這裏使用Django定製list_filter是一個簡單的例子:
from django.contrib import admin
class MultiSelectFilter(admin.SimpleListFilter):
# Filter title
title = 'Cities'
# model field
parameter_name = 'city_name'
def lookups(self, request, model_admin):
# you can modify this part, this is less DRY approach.
# P.S. assuming city_name is lowercase CharField
return (
('city1,city2,city3', 'City1 or City2 or City3'),
('city4,city5,city6', 'City3 or City4 or City6'),
)
def queryset(self, request, queryset):
if self.value() in ('city1,city2,city3', 'city4,city5,city6'):
# filter if a choice selected
return queryset.filter(city_name__in=self.value().split(','))
# default for no filtering
return queryset
你有一個參考到Google文檔here