【问题标题】:Serialize model with foreign key Django使用外键 Django 序列化模型
【发布时间】:2020-02-08 09:34:47
【问题描述】:

我有以下 json: 它的问题是'tipo_envase'字段,它的id在我的json中返回,但我不想要id,而是链接到tipo_envase的整个对象,基本上就是这个json: 我试图以这种方式序列化模型

 class TipoEnvaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tipoenvase
        fields = ('id','nombre')


class PresentationSerializer(serializers.ModelSerializer):

    class Meta:
        model = Presentation
        fields = ('nombre','capacidad','tipo_envase')

模型如下:

  class Presentation(models.Model):
    nombre = models.CharField(max_length=100)
    capacidad = models.CharField(max_length=100)
    tipo_envase = models.ForeignKey('Tipoenvase', on_delete=models.CASCADE)

    def __str__(self):
        return self.nombre + " " + self.capacidad + " " + self.tipo_envase.nombre

class Tipoenvase(models.Model):
nombre = models.CharField(max_length=100)

def __str__(self):
    return self.nombre

总而言之,需要以下 json 结构:

`{
"nombre":"Frasco"
"capacidad":"410 gr"
"tipo_envase":{
"id":"1"
"nombre":"vidrio"

}


}`

【问题讨论】:

    标签: json django django-models django-rest-framework django-serializer


    【解决方案1】:

    您可以嵌套序列化程序:

    class PresentationSerializer(serializers.ModelSerializer):
        tipo_envase = TipoEnvaseSerializer()
        class Meta:
            model = Presentation
            fields = ('nombre','capacidad','tipo_envase')
    

    【讨论】:

    • 它有效,只是为了记录:我在几分钟前尝试过,但使用了不同的名称,所以显然发生了错误,如果我没有错,它必须与模型中的名称相同对吗?
    • 嗯,它必须与 ForeignKey 字段的名称相同。
    猜你喜欢
    • 2011-04-30
    • 2021-05-04
    • 1970-01-01
    • 2018-07-02
    • 2013-01-26
    • 2012-05-17
    • 1970-01-01
    • 2015-01-07
    • 2016-06-17
    相关资源
    最近更新 更多