Mi modelo de producto tiene un campo adicional llamado "product_id" que es una cadena uuid. Ahora puedo obtener los detalles del producto según la identificación de la clave principal. Quiero cambiar esto para obtener los detalles del producto usando el campo "product_id".
Mi urls.py actual
url(r'^products/(?P<pk>[0-9]+)/$', views.ProductDetailCustom.as_view(), name='product-detail'),Ahora estoy llamando así.
http://127.0.0.1:8000/api/v1/products/1460Quiero que esto debería ser así.
http://127.0.0.1:8000/api/v1/products/04396134-3c90-ea7b-24ba-1fb0db11dbe5vistas.py
class ProductDetailCustom(generics.RetrieveAPIView): queryset = Product.objects.all() serializer_class = ProductCustomSerializerserializador.py
class ProductCustomSerializer(serializers.ModelSerializer): class Meta: model = Product fields = ('url', 'id','product_id', 'title', 'description','structure','date_created',)Creo que tengo que incluir un campo de búsqueda para lograr esto.
Agregue lookup_field a product_id :
class ProductDetailCustom(generics.RetrieveAPIView): lookup_field = "product_id" queryset = Product.objects.all() serializer_class = ProductCustomSerializer El lookup_field sería utilizado por la llamada get_object que recuperaría la instancia del modelo. Entonces puede escribir un método get_object personalizado en su vista.
Ref: http://www.django-rest-framework.org/api-guide/generic-views/#genericapiview