Aru*_* SS 7 python django django-models django-views django-rest-framework
我的产品模型有一个名为"product_id"的额外字段,它是一个uuid字符串.现在我可以根据主键ID获取产品详细信息.我想更改此信息以使用"product_id"字段获取产品详细信息.
我目前的urls.py
url(r'^products/(?P<pk>[0-9]+)/$', views.ProductDetailCustom.as_view(), name='product-detail'),
Run Code Online (Sandbox Code Playgroud)
现在我这样打电话.
http://127.0.0.1:8000/api/v1/products/1460
Run Code Online (Sandbox Code Playgroud)
我希望这应该是这样的.
http://127.0.0.1:8000/api/v1/products/04396134-3c90-ea7b-24ba-1fb0db11dbe5
Run Code Online (Sandbox Code Playgroud)
views.py
class ProductDetailCustom(generics.RetrieveAPIView):
queryset = Product.objects.all()
serializer_class = ProductCustomSerializer
Run Code Online (Sandbox Code Playgroud)
serializer.py
class ProductCustomSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('url', 'id','product_id', 'title', 'description','structure','date_created',)
Run Code Online (Sandbox Code Playgroud)
我想我必须包括一个外观领域来实现这个目标.
添加lookup_field到product_id:
class ProductDetailCustom(generics.RetrieveAPIView):
lookup_field = "product_id"
queryset = Product.objects.all()
serializer_class = ProductCustomSerializer
Run Code Online (Sandbox Code Playgroud)
该lookup_field会由使用get_object这将检索模型实例调用.因此,您可以get_object在视图上编写自定义方法.
参考:http://www.django-rest-framework.org/api-guide/generic-views/#genericapiview
| 归档时间: |
|
| 查看次数: |
3889 次 |
| 最近记录: |