Gui*_*mas 8 python django django-admin
我使用的烦恼search_fields,当搜索表达式中有多个单词,我想执行startswith搜索
我上课了
class Foo(models.Model):
kw = models.CharField(max_length = 255)
...
class FooAdmin(admin.ModelAdmin):
search_fields = ('^kw',)
Run Code Online (Sandbox Code Playgroud)
在'^'表明我要执行startswith搜索.如果我正在寻找kw'foo fuu',django将执行查询:
select * from app_foo where `foo`.`kw` like 'foo%' and `foo`.`kw` like 'fuu%'
Run Code Online (Sandbox Code Playgroud)
此查询显然没有结果.我该怎么做才能让引擎找到'foo fuu%'?
Mik*_*gel 12
如何重写self.query这样split()不起作用?
from django.contrib.admin.views.main import ChangeList
class UnsplitableUnicode(str):
"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 FooAdmin(admin.ModelAdmin):
def get_changelist(self, request, **kwargs):
return MultiWordSearchChangeList
Run Code Online (Sandbox Code Playgroud)