Django-filter: Adakah yang bisa memberikan contoh untuk digunakan dengan mesin Pencarian Teks Lengkap asli Django/Postgres?

Dibuat pada 16 Feb 2019  ·  4Komentar  ·  Sumber: carltongibson/django-filter

Benar-benar noob di sini....

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

Documentation

Komentar yang paling membantu

Hai @gotexis. Django-filter pada dasarnya melakukan dua hal:

  • Validasi masukan
  • Buat kueri dari input tersebut

Ketika tidak ada kelas Filter yang membuat kueri yang Anda cari, Anda memiliki dua opsi:

Jika Anda dapat menggeneralisasi kueri, menulis Filter kustom akan lebih dapat digunakan kembali, namun Filter.method berguna untuk instance satu kali. Anda akan menulis sesuatu seperti:

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))

Semua 4 komentar

Hai @gotexis. Django-filter pada dasarnya melakukan dua hal:

  • Validasi masukan
  • Buat kueri dari input tersebut

Ketika tidak ada kelas Filter yang membuat kueri yang Anda cari, Anda memiliki dua opsi:

Jika Anda dapat menggeneralisasi kueri, menulis Filter kustom akan lebih dapat digunakan kembali, namun Filter.method berguna untuk instance satu kali. Anda akan menulis sesuatu seperti:

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))

Wow terima kasih atas bantuan Anda @rpkilby , tolong beri saya beberapa hari lagi untuk mencerna kode ini ...

Saat ini saya membenturkan kepala saya dengan graphene-Django yang terintegrasi dengan Django-filters.

Saya berharap (idealnya) mengimplementasikan ini dengan GraphQL

Perhatikan bahwa mungkin ada beberapa masalah dengan bagaimana graphene-Django membungkus Django-filter. misalnya, lihat #927

@rpkilby Ya pak
Sepertinya memang ada banyak masalah dengan Graphene mengingat betapa tidak populernya Python+GraphQL dibandingkan dengan Node, ditambah penulis menyerah pada proyek, tidakkah Anda setuju :)

Salah satu yang terbaru, juga terkait dengan django-filter, adalah DjangoFilterConnectionField mereka tidak bekerja dengan prefetching, menghasilkan banyak pertanyaan. Saya gagal men-debugnya, saya ingin tahu apakah Anda punya pengalaman untuk dibagikan :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

chromakey picture chromakey  ·  5Komentar

techdragon picture techdragon  ·  5Komentar

sassanh picture sassanh  ·  4Komentar

loganknecht picture loganknecht  ·  4Komentar

lalzada picture lalzada  ·  3Komentar