【问题标题】:How to search keywords split by comma in django in AdminModel?如何在管理模型中搜索 django 中以逗号分隔的关键字?
【发布时间】:2026-01-16 04:20:03
【问题描述】:

我想进行自定义搜索,接受用“,”分隔的关键字,就像这个例子

我想得到分隔在两列 [name, status] 中的结果,status 有两个值结果“存在”或“不存在”,如何使用 django 和 python 来制作它

from django.contrib.admin.views.main import ChangeList
class UnsplitableUnicode(unicode):
    "An object that behaves like a unicode string but cannot be split()"
    def split(self, *args, **kwargs):
        return [self]

class MultiWordSearchChangeList(ChangeList):
    "Changelist that allows searches to contain spaces"
    def get_query_set(self, request):
        self.query = UnsplitableUnicode(self.query)
        return super(MultiWordSearchChangeList, self).get_query_set(request)


class TbldomainsPageAdmin(admin.ModelAdmin):
    list_display = ('name','status',)
    #raw_id_fields = ('name',)
    search_fields = ['name', ]
    def get_changelist(self, request, **kwargs):
        return MultiWordSearchChangeList

我在 models.py 中为搜索词编写了这个 python 代码,没有用逗号分隔

【问题讨论】:

  • 如果我的回答解决了你的问题,请确认。谢谢!

标签: python django django-models django-admin


【解决方案1】:

在 Django 文档中非常清楚地说明了 search_fileds 是由空格分隔的。 因此,按照此示例,目前无法搜索 first_name 恰好为 'john winston'(包含空格)的所有记录。

您可以查看here

也许你必须修改 Django 的源代码来自定义你的搜索表单。

【讨论】: