1

我在管理员搜索中遇到了一些问题,想知道是否有人对我做错了什么有任何建议/指点?

在管理员 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
4

0 回答 0