django find
1.0.0
Django-findは、プロジェクトのモデルに複雑な検索/フィルター機能を簡単に追加できるDjangoアプリです。 Djangoモデルを検索する2つの異なる方法をサポートしています。クエリベース、またはJSONベースです。
Django-findは全文検索エンジンではなく、モデルのフィールドを検索します。言い換えれば、モデルにフィルターをかけ、結果として表形式のデータを提供します。
クエリベースとは、これらのようなステートメントを使用してモデルを検索できることを意味します。
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はテンプレートに渡されるquerysetです)
検索可能なミックスを追加するだけです:
from django_find import Searchable
class Author ( models . Model , Searchable ):
name = models . CharField ( "Author Name" , max_length = 10 )
...そして、あなたは行くのが良いです:
# 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"' )複数のモデルにまたがる複雑な検索を簡単に実行できるようにするために、JSONベースのクエリメソッドが提供されます。これにより、次のようなカスタム検索を行うことができます。
このために、JSONベースの検索機能が提供されます。
{
"Author":{"name":[[["equals","test"]]]},
"Book": {"title":[[["notcontains","c"]]]},
"Chapter": {"content":[[["startswith","The "]]]}
}
Django-findは、これらのモデルに参加して有用な結果を返す方法を理解するのに賢明です。コードでは、JSONをロードして検索結果を取り戻すことができます。
# 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 ))インストール手順を含む完全なドキュメントはこちらです。
http://django-find.readthedocs.io