【问题标题】:How to filter by list of values in Django admin?如何在 Django admin 中按值列表进行过滤?
【发布时间】:2020-03-08 15:31:46
【问题描述】:

如何通过用户在文本字段中输入的值列表过滤 Django Admin 中的对象?

例如 - 用户将输入以逗号分隔的 ID 列表,Django 管理员应返回与这些 ID 匹配的所有对象?

【问题讨论】:

    标签: python django filter


    【解决方案1】:

    这是一个概念,所以你应该根据你的需要改变它

    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
    

    我的项目中的结果

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2011-10-14
      • 2015-12-17
      • 2014-09-24
      • 2012-06-29
      • 2010-10-15
      • 2010-10-27
      • 1970-01-01
      • 2011-09-28
      相关资源
      最近更新 更多