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 تم تمريرها إلى القالب)
فقط أضف mixin القابلة للبحث:
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