如何在django admin中使用multselect字段进行筛选
我在模型中使用如何在django admin中使用multselect字段进行筛选,django,django-models,Django,Django Models,我在模型中使用multiselectfield来定义一个字段,并且在list\u filteradmin页面中使用该字段时,也将该模型注册到admin.py 如何使用multiselectfield并将其用于过滤器,或者是否有更好的方法来处理它?查看他们的GitHub问题。它有点老了,但看起来这个问题仍然存在,更像是一个“特性” 您可以使用PostgreSQL,或者将值存储在由ForeignKey链接的单独的相关表中。您可以创建一个新的自定义筛选器来完成此操作 基于docs multiselec
multiselectfield
来定义一个字段,并且在list\u filter
admin页面中使用该字段时,也将该模型注册到admin.py
如何使用multiselectfield
并将其用于过滤器,或者是否有更好的方法来处理它?查看他们的GitHub问题。它有点老了,但看起来这个问题仍然存在,更像是一个“特性”
您可以使用PostgreSQL,或者将值存储在由ForeignKey链接的单独的相关表中。您可以创建一个新的自定义筛选器来完成此操作 基于docs multiselect storage,选择一个字符字段,其中所选选项以逗号分隔 当用户仅选择一个选项时,可以使用endswith获取;当用户选择多个选项时,可以使用icontains获取
class MultiSelectFilter(admin.SimpleListFilter):
# Human-readable title which will be displayed in the
# right admin sidebar just above the filter options.
title = param_title
parameter_name = param_name
def lookups(self, request, model_admin):
return ( ('option 1', 'Option 1'),
('option 2', 'Option 2')) # tuple ('lookup_value', 'tittle_value in list filter')
def queryset(self, request, queryset):
if self.value():
return queryset.filter(Q(**{
f'{self.parameter_name}__iendswith': self.value()
}) | Q(**{
f'{self.parameter_name}__icontains': f'{self.value()},'
}))
return queryset