我在管理员搜索中遇到了一些问题,想知道是否有人对我做错了什么有任何建议/指点?
在管理员 search_fields 我正在做这个 search_fields = ['games_played', 'dxdiag',] 它适用于 games_played 但 dxdiag 是一个 dxdiag,其中检索到某些数据并转换为 JSON 字符串。
我想要做的是能够搜索一个以上的单词,例如“windows xp”(用“表示有一个以上的单词),为此我覆盖了查询集,但它没有工作。当我搜索“windows xp”时,我得到“0 个结果(总共 13 个)”(15 个帖子中有 13 个有 windows xp)并且没有显示任何帖子。我是错误地解决了这个问题还是我只是忘记了某物?
class AdminUserData(admin.ModelAdmin):
search_fields = ['games_played', 'dxdiag',] #Search field at top
def queryset(self, request):
qs = super(AdminUserData, self).queryset(request)
if request.GET:
query = request.GET.get('q')
if query == None:
return qs
data = query.split(' ')
begin = []
end = []
if data == None:
return qs
for item in data:
if item.startswith("'"):
begin.append(item[1:])
if item.endswith("'"):
end.append(item[:-1])
if len(begin) == 0 or len(end) == 0:
return qs
result = []
for i in xrange(0, len(begin)):
if begin[i][:-1] == end[i][1:]:
result.append(begin[i][:-1])
else:
result.append(begin[i] + ' ' + end[i])
for i in xrange(0, len(result)):
qs = qs.filter(dxdiag__icontains=result[i])
print qs #prints all user that has a dxdiag with "windows xp"
return qs