django find
1.0.0
Django-Find是一個Django應用程序,可輕鬆為您的項目中的模型添加複雜的搜索/過濾器功能。它支持搜索Django模型的兩種不同方法:基於查詢或基於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