Django-Find adalah aplikasi Django yang memudahkan untuk menambahkan fungsi pencarian/filter yang kompleks untuk model dalam proyek Anda. Ini mendukung dua cara berbeda untuk mencari model Django Anda: berbasis kueri, atau berbasis JSON.
Django-Find bukan mesin pencari teks lengkap, ia mencari bidang model Anda. Dengan kata lain, itu menyaring model Anda dan memberikan data tabel sebagai hasilnya.
Dengan berdasarkan kueri, maksud kami bahwa Anda dapat menggunakan pernyataan seperti ini untuk mencari model Anda:
author:"robert frost" and (title:road or chapter:2)
{% load find_tags %}
{% find object_list %}
{% for obj in object_list %}
{{ obj.name }}
{% endfor %}
(Object_list adalah queryset yang diteruskan ke templat)
Tambahkan saja mixin yang dapat dicari:
from django_find import Searchable
class Author ( models . Model , Searchable ):
name = models . CharField ( "Author Name" , max_length = 10 )
...Dan Anda baik untuk pergi:
# Query-based search returns a standard Django QuerySet that you
# can .filter() and work with as usual.
query = Book . by_query ( 'author:"robert frost" and title:"the road"' )
# You can also get a Django Q object for the statements.
q_obj = Book . q_from_query ( 'author:"robert frost" and title:"the road"' )Untuk memudahkan melakukan pencarian kompleks yang mencakup banyak model, metode kueri berbasis JSON disediakan. Ini memungkinkan Anda untuk melakukan pencarian khusus seperti ini:
Untuk ini, fungsi pencarian berbasis JSON disediakan:
{
"Author":{"name":[[["equals","test"]]]},
"Book": {"title":[[["notcontains","c"]]]},
"Chapter": {"content":[[["startswith","The "]]]}
}
Django-Find cerdas dalam mencari tahu cara bergabung dengan model-model itu bersama-sama dan mengembalikan hasil yang bermanfaat. Dalam kode Anda, Anda dapat memuat JSON dan mendapatkan kembali hasil pencarian:
# JSON-based search exhausts what Django's ORM can do, so it does
# not return a Django QuerySet, but a row-based PaginatedRawQuerySet:
query , field_list = Book . by_json_raw ( '''{
"Chapter": {"title":[[["contains","foo"]]]}
}''' )
print ( '|' . join ( field_list ))
for row in query :
print ( '|' . join ( row ))Dokumentasi lengkap, termasuk instruksi instalasi, ada di sini:
http://django-find.readthedocs.io