Я работаю с django-rest-framework, и у меня есть API, который возвращает мне информацию с таким фильтром:
http://example.com/api/products?category=clothing&in_stock=True
--this returns me 10 items
Но он также возвращает все данные модели, если я не устанавливаю фильтры, это способ по умолчанию.
http://example.com/api/products/
--this returns me more than 100 (all the Model Table)
Как я могу отключить эту операцию по умолчанию, я имею в виду, как я могу сделать фильтр необходимым для работы этого API? или даже лучше! как я могу сделать так, чтобы последний URL-адрес возвращал пустой ответ json?
ОБНОВЛЕНИЕ Вот код:
сериализаторы.py
class OEntradaDetalleSerializer(serializers.HyperlinkedModelSerializer):
item = serializers.RelatedField(source='producto.item')
descripcion = serializers.RelatedField(source='producto.descripcion')
unidad = serializers.RelatedField(source='producto.unidad')
class Meta:
model = OEntradaDetalle
fields = ('url','item','descripcion','unidad','cantidad_ordenada','cantidad_recibida','epc')
views.py
class OEntradaDetalleViewSet(BulkUpdateModelMixin,viewsets.ModelViewSet):
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('cantidad_ordenada','cantidad_recibida','oentrada__codigo_proveedor','oentrada__folio')
queryset = OEntradaDetalle.objects.all()
serializer_class = OEntradaDetalleSerializer
urls.py
router2 = BulkUpdateRouter()
router2.register(r'oentradadetalle', OEntradaDetalleViewSet)
urlpatterns = patterns('',
url(r'^api/',include(router2.urls)),
)
ПРИМЕР URL
http://localhost:8000/api/oentradadetalle/?oentrada__folio=E01
THIS RETURNS ONLY SOME FILTERED VALUES
http://localhost:8000/api/oentradadetalle/
THIS RETURNS EVERYTHING IN THE MODEL (I need to remove this or make it return some empty data)