djangoでviewparamsを作成し、クエリparamsでurlを取得し、クエリparamsをフィルタリングしたいとします。ドキュメントに関する私の最大の問題は、それらを馬鹿にするものではないということです。以下のURLで動作しますDjangoの残りのフレームワークのドキュメントdjangofilterbackendクエリパラメータと入力されていないクエリパラメータオプション
class ProductList(generics.ListAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('category', 'in_stock')
http://www.django-rest-framework.org/api-guide/filtering/からこの例を見てみましょう:
http://example.com/api/products?category=clothing&in_stock=True
しかし、私は例えば設定されたカテゴリのオプションを使用せずにURLを持っている場合。このコードは壊れますか?それとも、クエリのパラメータフィルタに値が設定されていないかを知り、それを無視するのに十分なのですか? OK罰金、それはそのdjangofilterbackendライブラリを意味しているのは、フィルタがguarnteedされているユースケースのための唯一の良いです
ass PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer
def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
queryset = queryset.filter(purchaser__username=username)
return queryset
:それはそれからではない場合
私は、このようなフィルタを作成する必要が想像します?もし誰かが私に例を教えてくれないのであれば、ドキュメントは私のような馬鹿な気がしません。
ありがとう
あなたの答えは混乱しています。 djangofilterbackendを使用してフィルタを設定すると、たとえば5のようなフィルタがあっても、クエリパラメータがないURL、または1つのクエリパラメータのみが存在しますか?私が意味することは、djangobackendドキュメントに示されている例のように、djagnofilterbackendを使用して、クエリパラメータを動的に使用できるかどうかです。すべてのクエリパラメータがそこにあるとは限りません。 –
はい、クエリパラメータがないURLを許可します。この例に示すように、違いはありません。値が存在する場合はクエリパラメータが有効になります。 –
ok次に、すべてのクエリパラメータが正しく表示されているわけではありません。 –