1

管理者の検索に問題があり、誰かが私が間違っていることについて何か提案/ポインタを持っているかどうか疑問に思っていましたか?

admin search_fields では、この search_fields = ['games_played', 'dxdiag',] を実行していますが、games_played では問題なく動作しますが、dxdiag は特定のデータを取得して JSON 文字列に変換した dxdiag です。

私がやりたいのは、「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