-1
「Cities」というモデルがあり、admin側に市の名前に基づいてモデルをフィルタリングするフィルタ 'city_name'があるとします。 デフォルトでは、django管理フィルタから都市名を1つだけ選択できます。 しかし、私はdjango adminフィルタで複数の都市名を選択する必要があります。複数選択のdjango管理フィルタは可能ですか?
「Cities」というモデルがあり、admin側に市の名前に基づいてモデルをフィルタリングするフィルタ 'city_name'があるとします。 デフォルトでは、django管理フィルタから都市名を1つだけ選択できます。 しかし、私はdjango adminフィルタで複数の都市名を選択する必要があります。複数選択の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
あなたはドキュメントhere
への参照を持っています