class OrderFilter(django_filters.FilterSet):
class Meta:
model = Order
fields = {
'status': ['exact',],
'client': ['icontains',],
}
class OrderViewset(viewsets.ModelViewSet):
filter_class = OrderFilter
permission_classes = ( permissions.IsAuthenticated, )
serializer_class = OrderSerializer
queryset = Order.objects.all()
filter_backends = (
filters.OrderingFilter,
filters.SearchFilter,
filters.DjangoFilterBackend
)
ordering_fields = ('added_at', 'status', 'client', 'order_number')
ordering = ('-added_at',)
class Order(models.Model):
order_number = models.CharField(max_length=255, default='')
client = models.CharField(max_length=255, default='')
status = models.CharField(max_length=255, default='')
added_at = models.DateTimeField(auto_now_add=True)
Filter klien pada dasarnya diabaikan. Jika saya mengganti icontains dengan tepat, itu berfungsi.
Tapi saya tidak bisa mendapatkan berisi atau ikon untuk bekerja di bidang apa pun.
Persyaratan.txt:
Django==1.10.4
psycopg2==2.6.2
djangorestframework==3.5.3
saluran == 1.0.0
djangorestframework-jwt==1.9.0
django-filter == 1.0.1
asgi-redis==1.0.0
daphne==1.0.0
Hai @xtrinch.
Dari deskripsi saya tidak bisa melihat masalah. Dapatkah saya menyarankan agar Anda mencoba menempatkan breakpoint di properti FilterSet
qs
dan melangkah untuk melihat apa yang terjadi.
Jika Anda dapat mempersempitnya menjadi kasus uji sederhana, itu juga akan membantu.
Filter
hanya mengambil nilai dan membangun pencarian untuk ORM jadi pertanyaannya adalah, _Di mana kesalahannya?_
Hai @xtrinch - bisakah Anda memposting contoh URL dengan parameter kueri? Dugaan saya adalah Anda menanyakan /api/orders?status=foo
alih-alih /api/orders?status__icontains=foo
. Ada catatan di dokumen Meta.fields
yang menjelaskan perilaku pencarian exact
yang sedikit berbeda.
@rpkilby Terima kasih. Saya mendapat kesan bahwa item pertama dalam array menjadi filter default - sepertinya saya salah :)
posting Anda sangat berguna bagi saya dalam proyek saya
Terima kasih
Komentar yang paling membantu
Hai @xtrinch - bisakah Anda memposting contoh URL dengan parameter kueri? Dugaan saya adalah Anda menanyakan
/api/orders?status=foo
alih-alih/api/orders?status__icontains=foo
. Ada catatan di dokumenMeta.fields
yang menjelaskan perilaku pencarianexact
yang sedikit berbeda.