【发布时间】:2014-10-31 06:30:39
【问题描述】:
我正在使用 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 响应?
更新 这是一些代码:
serializers.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)),
)
网址示例
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)
【问题讨论】:
-
请给出一些代码。
-
我不知道你为什么需要一些代码,它有默认的 API 行为,我需要重写它。无论如何......我自己的代码有一个更新,我希望你能帮助我。谢谢
标签: django django-rest-framework