Soy novato en Django Rest-framework. Uso Modelviewset para crear una API para el proyecto. Quiero obtener una lista de cosas no por identificación y uso lookup_field para hacer eso. Pero solo devuelve 1 objeto. ¿Cómo puedo personalizarlo para devolver un objeto múltiple?
este es mi modelo
class Rating(models.Model): dayandtime = models.DateTimeField(auto_now_add=True) ratingpoint = models.IntegerField(null=True,blank=True) ratingcomment = models.TextField(null=True, blank=True) img = models.ImageField(upload_to='static',default=None) product = models.ForeignKey(Product,on_delete=models.CASCADE) user = models.ForeignKey(User,on_delete=models.CASCADE)Estas son mis opiniones
class RatingViewSet(viewsets.ModelViewSet): queryset = Rating.objects.all() serializer_class = RatingSerializer lookup_field = "product"Este es mi serializador
class RatingSerializer(ModelSerializer): class Meta: model=Rating fields=["id","dayandtime","ratingpoint", "ratingcomment","img","product","user"] lookup_field = "product"Por favor, ayúdame a solucionar este problema. Muchísimas gracias
Desea usar el filtro en la API y devolver múltiples objetos. Pero lookup_field se usa para realizar búsquedas de objetos de instancias de modelos individuales . Hay muchas formas de lograr su objetivo, pero le mostraré filtrar por parámetros de consulta .
Puede anular get_queryset() para manejar URL como http://yourdoamin.com/api/ratings?product=1 (aquí asumimos que desea filtrar por ID de producto).
class RatingViewSet(viewsets.ModelViewSet): serializer_class = RatingSerializer def get_queryset(self): queryset = Rating.objects.all() product= self.request.query_params.get('product') if product not None: queryset = queryset.filter(product_id=product) return queryset Por supuesto, puede agregar muchos bloques if/elif/else para manejar muchos parámetros de consulta.
También puede usar un método similar: la clase SearchFilter para lograr el mismo objetivo.
Más información sobre la documentación de filtrado DRF