使用外键 Django 序列化模型
Serialize model with foreign key Django
我有以下 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"
}
}`
您可以嵌套序列化程序:
class PresentationSerializer(serializers.ModelSerializer):
tipo_envase = TipoEnvaseSerializer()
class Meta:
model = Presentation
fields = ('nombre','capacidad','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"
}
}`
您可以嵌套序列化程序:
class PresentationSerializer(serializers.ModelSerializer):
tipo_envase = TipoEnvaseSerializer()
class Meta:
model = Presentation
fields = ('nombre','capacidad','tipo_envase')