2016-05-18 5 views
0

Fuse.js(http://kiro.me/projects/fuse.html)を使って検索しようとしているDjangoオブジェクト(メッセージ)のリストがあります。私が理解するところから、ヒューズはJSON配列だけを受け入れます。私はDjangoのシリアライザを使用してリストをシリアライズし、次にJSONダンプを使用して、新しくフォーマットされたデータをDjangoテンプレートに渡しました。検索は機能しているようですが、オブジェクトではなくインデックスを返すだけなので、理由を理解できません。また、一度に1文字ずつ検索する場合にのみ機能します。私にはこれのすべてに新しいことであることを許してください。 。 。私の質問が理にかなっていないかどうかを教えてください。次に、文字 'T'を検索するときのコンソール出力の例を示します。完全な配列は、最上部にある検索結果は青である:json.dumps、シリアライザ、fuse.jsでDjangoオブジェクトから検索

enter image description here

は、ここに私の見解です:

@login_required 
def inbox(request, template_name='django_messages/inbox.html'): 

    message_list = Message.objects.inbox_for(request.user) 
    json_serialized_list = serializers.serialize("json", message_list) 

    return render_to_response(template_name, { 
     'message_list': message_list, 
     'json_list': json.dumps(json_serialized_list), 
    }, context_instance=RequestContext(request)) 

そして、私のテンプレート:

$(function(){  
// testing a search with fuse.js 
       var json_list = {{ json_list|safe }} 
       console.log(json_list) 

       var options = { 
        keys: ['fields.subject'], 

       } 

       var f = new Fuse(json_list, options); 
       var result = f.search('t'); 
       console.log(result) 
}); 

任意のアイデア? :)

答えて

0

私はあなたのコードを同様のJSON配列で複製しています。

data = [{"pk": 1, "fields":{"subject": "Welcome"}, "models": "django_messages.message"}, 
 
     {"pk": 2, "fields":{"subject": "Test"}, "models": "django_messages.message"}]; 
 
var options = { 
 
        keys: ['fields.subject'], 
 
       } 
 

 
var f = new Fuse(data, options); 
 
var result = f.search('t'); 
 
console.log(result);
<script type='text/javascript' src="https://cdn.jsdelivr.net/fuse/2.2.0/fuse.min.js"></script>
CDN

から右 Fuse.jsライブラリを持っているようにしてください、または1つを使用し

+0

あなた@mosesをありがとう!とても奇妙です。 。 。上のスクリーンショットのjson配列は{{json_list | safe}}をコンソールに出力した結果です。その配列をコピーしてJavascriptに直接入れると(上記のように)、検索は完全に動作します!しかし、変数の検索を実行するだけで、検索結果の空のリストが返されます。とても奇妙。 – laurenll

+0

あなたの 'fuse.js'をチェックしましたか?あなたは 'src'を私が使ったものと置き換えようとすることができます –

+0

はい私はあなたも使ったcdnを試しました。私はビューや何かからそれを渡すときに配列を台無しにする必要があります。 :(@moses – laurenll

関連する問題