Recientemente comencé con Django Framework y estoy atascado en esta situación, intenté leer la documentación, pero mi falta de experiencia no puedo entender mucho. ¿Hay alguna forma en que podamos obtener la respuesta que queríamos manteniendo las comprobaciones predeterminadas de Django, la validación tanto como sea posible? Intenté usar def to_representation pero aún así me da una respuesta nula cuando depuro.
caso de uso: menciono el modelo a continuación, quiero un valor de clave externa como texto almacenado en la tabla status_lookup.name de la tabla de productos
class product_serializer(serializers.ModelSerializer): status = status_lookup_serializer(read_only=True,many=False) class Meta: model = product fields = ('id','name','status_id','status')modelo.py
class status_lookup(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=30) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(blank=True) activation_date = models.DateTimeField(auto_now_add=True) deactivation_date = models.DateTimeField(blank=True,default=None) def __str__(self): return self.name class product(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=30) img_url = models.CharField(max_length=255,blank=True) status_id = models.ForeignKey(status_lookup, related_name='status', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(blank=True) activation_date = models.DateTimeField(auto_now_add=True) deactivation_date = models.DateTimeField(blank=True,default=None) def __str__(self): return self.namedeseo
[ { "id":1, "name":"xxx", "status":pending } ]Comprueba si esto te puede ayudar. es un enlace de documentación para Django-rest-framework
https://www.django-rest-framework.org/api-guide/serializers/
Pude hacerlo con esto. No sé si es la forma óptima de hacerlo o no, pero mantendré esta pregunta abierta hasta que encuentre una respuesta.
class statusField(serializers.RelatedField): def to_representation(self, value): return { 'name':value.name } class product_serializer(serializers.ModelSerializer): status_id = statusField(many=False,read_only=True) class Meta: model = product fields = ('id','name','status_id')