Django管理员搜索,句子搜索

时间:2012-09-05 08:35:09

标签: django search admin django-queryset

我在管理搜索方面遇到了一些问题,并且想知道是否有人有任何建议/指示我做错了什么?

在admin 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

0 个答案:

没有答案