0

我有一个 Django 对象(消息)列表,我正在尝试使用 Fuse.js ( http://kiro.me/projects/fuse.html ) 进行搜索。据我了解,Fuse 只接受 JSON 数组。我使用 Django 的序列化程序来序列化我的列表,然后 JSON 转储将新格式化的数据传递给我的 Django 模板。搜索似乎正在工作(有点),但它只返回索引而不是对象,我不知道为什么。此外,它仅在您一次搜索一个字符时才有效。请原谅我对这一切如此陌生。. . 如果我的问题甚至没有意义,请告诉我。这是我搜索字母“T”时控制台输出的示例。完整数组位于顶部,搜索结果为蓝色:

在此处输入图像描述

这是我的看法:

@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)
});

有任何想法吗??:)

4

1 回答 1

0

我用一个类似的 JSON 数组复制了你的代码,它可以工作。确保拥有正确的Fuse.js库,或使用来自 cdn 的库

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>

于 2016-05-18T22:19:43.023 回答