Поиск по объектам Django с помощью json.dumps, сериализаторов и fuse.js
У меня есть список объектов (сообщений) Django, которые я пытаюсь найти, используя Fuse.js ( http://kiro.me/projects/fuse.html). Из того, что я понимаю, Fuse принимает только массивы JSON. Я использовал сериализаторы Django для сериализации моего списка, а затем дампы JSON для передачи вновь отформатированных данных в мой шаблон 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)
});
Есть идеи??:)
1 ответ
Я скопировал ваш код с похожим массивом 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>