Fuse.js(http://kiro.me/projects/fuse.html)を使って検索しようとしているDjangoオブジェクト(メッセージ)のリストがあります。私が理解するところから、ヒューズはJSON配列だけを受け入れます。私はDjangoのシリアライザを使用してリストをシリアライズし、次にJSONダンプを使用して、新しくフォーマットされたデータをDjangoテンプレートに渡しました。検索は機能しているようですが、オブジェクトではなくインデックスを返すだけなので、理由を理解できません。また、一度に1文字ずつ検索する場合にのみ機能します。私にはこれのすべてに新しいことであることを許してください。 。 。私の質問が理にかなっていないかどうかを教えてください。次に、文字 'T'を検索するときのコンソール出力の例を示します。完全な配列は、最上部にある検索結果は青である:json.dumps、シリアライザ、fuse.jsでDjangoオブジェクトから検索
は、ここに私の見解です:
@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)
});
任意のアイデア? :)
あなた@mosesをありがとう!とても奇妙です。 。 。上のスクリーンショットのjson配列は{{json_list | safe}}をコンソールに出力した結果です。その配列をコピーしてJavascriptに直接入れると(上記のように)、検索は完全に動作します!しかし、変数の検索を実行するだけで、検索結果の空のリストが返されます。とても奇妙。 – laurenll
あなたの 'fuse.js'をチェックしましたか?あなたは 'src'を私が使ったものと置き換えようとすることができます –
はい私はあなたも使ったcdnを試しました。私はビューや何かからそれを渡すときに配列を台無しにする必要があります。 :(@moses – laurenll