多个序列化器

Multiple Serilizers

你好,我有这个模型,我想序列化这个 en one viewsets

Models.py

class Coche(models.Model):

    marca = models.ForeignKey('Marca', null=True, blank=True,verbose_name="Marca")
    modelo = models.ForeignKey('Modelo', null=True, blank=True)
    version = models.CharField(max_length=120)
    estado = models.CharField(max_length=12, choices=Estado_CHOICES)
    anio = models.IntegerField ( )
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)

    def __unicode__(self):
        return self.version


    def get_absolute_url(self):
        return reverse("single_product", kwargs={"pk": self.pk})   

class ParteFrontal(models.Model):

    coche = models.ForeignKey(Coche, related_name='partefrontal')
    imagen = models.ImageField(upload_to='templates/products/images/')
    notas = models.TextField(null=True)

我试过如下

serializers.py

class CocheImagen(serializers.ModelSerializer):
    partefrontal = serializers(many=True,read_only=True)
    class Meta :
        model = Coche 
        fields = ('marca', 'modelo','version', 'estado','anio','partefrontal')

Viewsets.py

class CocheImagen(viewsets.ModelViewSet):
    serializer_class = CocheImagen
    queryset = Coche.objects.all()

您需要为 ParteFrontal 创建另一个序列化程序,例如:

class ParteFrontalSerializer(serializers.ModelSerializer):
    class Meta:
        model = ParteFrontal
        fields = ('imagen', 'notas')

接下来,您可以在 CocheImagen 序列化器中使用 ParteFrontalSerializer,例如:

class CocheImagen(serializers.ModelSerializer):
    partefrontal = ParteFrontalSerializer(many=True,read_only=True)
    class Meta :
        model = Coche 
        fields = ('marca', 'modelo','version', 'estado','anio','partefrontal')

了解有关嵌套关系的更多信息here