【问题标题】:Multiple Serilizers多个序列化器
【发布时间】:2015-12-12 03:49:12
【问题描述】:

你好,我有这个模型,我想序列化这个视图集

模型.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)

我尝试如下

序列化器.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()

【问题讨论】:

    标签: django-rest-framework django-serializer


    【解决方案1】:

    您需要为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

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 1970-01-01
      • 2017-02-08
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      相关资源
      最近更新 更多