Benar-benar noob di sini....
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/#postgresql -fts-search-configuration
Hai @gotexis. Django-filter pada dasarnya melakukan dua hal:
Ketika tidak ada kelas Filter
yang membuat kueri yang Anda cari, Anda memiliki dua opsi:
Filter.method
.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 :)
Komentar yang paling membantu
Hai @gotexis. Django-filter pada dasarnya melakukan dua hal:
Ketika tidak ada kelas
Filter
yang membuat kueri yang Anda cari, Anda memiliki dua opsi:Filter.method
.Jika Anda dapat menggeneralisasi kueri, menulis
Filter
kustom akan lebih dapat digunakan kembali, namunFilter.method
berguna untuk instance satu kali. Anda akan menulis sesuatu seperti: