【发布时间】:2020-03-08 15:31:46
【问题描述】:
如何通过用户在文本字段中输入的值列表过滤 Django Admin 中的对象?
例如 - 用户将输入以逗号分隔的 ID 列表,Django 管理员应返回与这些 ID 匹配的所有对象?
【问题讨论】:
如何通过用户在文本字段中输入的值列表过滤 Django Admin 中的对象?
例如 - 用户将输入以逗号分隔的 ID 列表,Django 管理员应返回与这些 ID 匹配的所有对象?
【问题讨论】:
这是一个概念,所以你应该根据你的需要改变它
class YourAdmin(admin.ModelAdmin):
list_display = ['id']
search_fields = ['id']
def get_search_results(self, request, queryset, search_term):
queryset, use_distinct = super().get_search_results(request, queryset, search_term)
if search_term != '': # This chek needed if you additionaly use SimpleListFilter, otherwise SimpleListFilter would be broken
search_term = map(int, search_term.split(',')) #not integers in search_term will result in an error
queryset |= self.model.objects.filter(id__in = search_term)
return queryset.distinct(), use_distinct #adding distinct() or objects duplicates could appear
我的项目中的结果
【讨论】: