Django-filter: 含まれている/アイコンが機能していないフィルターを含む

作成日 2017年01月16日  ·  4コメント  ·  ソース: carltongibson/django-filter

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)

クライアントフィルターは基本的に無視されます。 icontainsをexactに置き換えると、機能します。
しかし、どのフィールドでも機能するコンテインやアイコンを取得できません。

Requirements.txt:

Django == 1.10.4
psycopg2 == 2.6.2
djangorestframework == 3.5.3
チャネル== 1.0.0
djangorestframework-jwt == 1.9.0
django-filter == 1.0.1
asgi-redis == 1.0.0
daphne == 1.0.0

最も参考になるコメント

こんにちは@ xtrinch-クエリパラメータを使用してサンプルURLを投稿できますか? 私の推測では、あなたが照会しているということです/api/orders?status=fooの代わりに/api/orders?status__icontains=fooMeta.fieldsドキュメントには、 exactルックアップのわずかに異なる動作を説明するメモがあります。

全てのコメント4件

こんにちは@xtrinch。

説明から問題がわかりません。 FilterSetqsプロパティにブレークポイントを設定して、何が起こっているかを確認することをお勧めします。

簡単なテストケースに絞り込むことができれば、それも役に立ちます。

Filterは値を取得し、ORMのルックアップを作成するだけなので、問題は、_どこが間違っているのか?_です。

こんにちは@ xtrinch-クエリパラメータを使用してサンプルURLを投稿できますか? 私の推測では、あなたが照会しているということです/api/orders?status=fooの代わりに/api/orders?status__icontains=fooMeta.fieldsドキュメントには、 exactルックアップのわずかに異なる動作を説明するメモがあります。

@rpkilbyありがとう。 配列の最初の項目がデフォルトのフィルターになるという印象を受けました-私は間違っていたようです:)

あなたの投稿は私のプロジェクトで私にとって非常に役に立ちます
ありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価