Django-filter: هل يمكن لأي شخص أن يعطي مثالاً لاستخدامه مع محرك بحث النص الكامل الأصلي لـ Django / Postgres؟

تم إنشاؤها على ١٦ فبراير ٢٠١٩  ·  4تعليقات  ·  مصدر: carltongibson/django-filter

مستجد تماما هنا ....

https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/#postgresql -fts-search-config

Documentation

التعليق الأكثر فائدة

مرحبًاgotexis. يقوم django-filter بشكل أساسي بأمرين:

  • التحقق من صحة المدخلات
  • بناء الاستعلامات من تلك المدخلات

عندما لا يكون هناك فئة Filter تقوم ببناء الاستعلام الذي تبحث عنه ، فلديك خياران:

  • اكتب فئة مرشح جديدة
  • استخدم ميزة Filter.method .

إذا كان بإمكانك تعميم الاستعلام ، فستكون كتابة Filter مخصصًا أكثر قابلية لإعادة الاستخدام ، لكن Filter.method مفيد للحالات غير المتكررة. ستكتب شيئًا مثل:

from django.contrib.postgres.search import SearchQuery, SearchVector
from djanog_filters import FilterSet, CharFilter

class F(FilterSet):
    # The model `field_name` is the field you want to search on and is passed to your `method`.
    # The `method` argument is the name of the method to call to perform filtering.
    search = CharFilter(field_name='body_text', method='search_fulltext')

    def search_fulltext(self, queryset, field_name, value):
        return queryset \
            .annotate(search=SearchVector(field_name)) \
            .filter(search=SearchQuery(value))

ال 4 كومينتر

مرحبًاgotexis. يقوم django-filter بشكل أساسي بأمرين:

  • التحقق من صحة المدخلات
  • بناء الاستعلامات من تلك المدخلات

عندما لا يكون هناك فئة Filter تقوم ببناء الاستعلام الذي تبحث عنه ، فلديك خياران:

  • اكتب فئة مرشح جديدة
  • استخدم ميزة Filter.method .

إذا كان بإمكانك تعميم الاستعلام ، فستكون كتابة Filter مخصصًا أكثر قابلية لإعادة الاستخدام ، لكن Filter.method مفيد للحالات غير المتكررة. ستكتب شيئًا مثل:

from django.contrib.postgres.search import SearchQuery, SearchVector
from djanog_filters import FilterSet, CharFilter

class F(FilterSet):
    # The model `field_name` is the field you want to search on and is passed to your `method`.
    # The `method` argument is the name of the method to call to perform filtering.
    search = CharFilter(field_name='body_text', method='search_fulltext')

    def search_fulltext(self, queryset, field_name, value):
        return queryset \
            .annotate(search=SearchVector(field_name)) \
            .filter(search=SearchQuery(value))

واو شكرًا على مساعدتك @ rpkilby ، من فضلك أعطني بعض الأيام

أنا الآن أضرب رأسي باستخدام الجرافين-دجانغو الذي يتكامل مع مرشحات django.

آمل (بشكل مثالي) تنفيذ ذلك باستخدام GraphQL

لاحظ أنه قد تكون هناك بعض المشكلات المتعلقة بكيفية التفاف الجرافين-دجانجو لمرشح django. على سبيل المثال ، انظر # 927

تضمين التغريدة
يبدو أن هناك أكوام الواقع من القضايا مع الجرافين نظرا لمدى أصبحت لا تحظى بشعبية بيثون + GraphQL بالمقارنة مع عقدة، بالإضافة إلى المؤلف هو التخلي عن المشروع، لن توافق على ذلك :)

أحد أحدثها ، والذي يرتبط أيضًا بفلتر django ، هو أن DjangoFilterConnectionField لا يعمل مع الجلب المسبق ، مما ينتج عنه الكثير من الاستعلامات. لقد فشلت في تصحيحه ، وأتساءل عما إذا كان لديك أي خبرة لمشاركتها :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات