Python Django rest框架序列化程序外键
因此,我有以下模型在我的 models.py:Python Django rest框架序列化程序外键,python,django,Python,Django,因此,我有以下模型在我的 models.py: class Coordonnees(models.Model): latitude = models.CharField(max_length=20) longitude = models.CharField(max_length=20) def __str__(self): return self.latitude+','+self.longitude class Ecole(models.Model)
class Coordonnees(models.Model):
latitude = models.CharField(max_length=20)
longitude = models.CharField(max_length=20)
def __str__(self):
return self.latitude+','+self.longitude
class Ecole(models.Model):
nomEcole = models.CharField(max_length=100)
numTel = models.CharField(max_length=100)
coordonnee = models.ForeignKey(Coordonnees, on_delete=models.CASCADE)
def __str__(self):
return self.nomEcole
在my serializers.py中:
class CoordonneesSerializer(serializers.ModelSerializer):
class Meta:
model = Coordonnees
#our fields
fields = ('id','latitude','longitude')
class EcoleSerializer(serializers.ModelSerializer):
class Meta:
model = Ecole
#our fields
fields = ('id','nomEcole','numTel','coordonnee')
问题是,当我检查我的“Ecole”的json文件时,我得到以下输出
[{"id":1,"nomEcole":"draoui","numTel":"28747484","coordonnee":1}]
所以问题是:我想显示纬度和经度,而不是“Coordonne”中的1,最简单的生成方法是在Meta类中使用
depth
选项
class EcoleSerializer(serializers.ModelSerializer):
class Meta:
model = Ecole
depth = 1
fields = ('id', 'nomEcole', 'numTel', 'coordonnee')
然后,输出将如下所示:
[
{
"id":1,
"nomEcole":"draoui",
"numTel":"28747484",
"coordonnee": [
{
"id": 1,
"latitude": 0,
"longitude": 0
}
]
}
]
最简单的生成方法是在元类中使用
depth
选项
class EcoleSerializer(serializers.ModelSerializer):
class Meta:
model = Ecole
depth = 1
fields = ('id', 'nomEcole', 'numTel', 'coordonnee')
然后,输出将如下所示:
[
{
"id":1,
"nomEcole":"draoui",
"numTel":"28747484",
"coordonnee": [
{
"id": 1,
"latitude": 0,
"longitude": 0
}
]
}
]
您希望在Django Rest框架中序列化一个。要实现这一点,可以使用嵌套模型的序列化程序作为序列化程序字段:
class EcoleSerializer(serializers.ModelSerializer):
coordonnee = CoordonneesSerializer()
class Meta:
model = Ecole
#our fields
fields = ('id', 'nomEcole', 'numTel', 'coordonnee')
您希望在Django Rest框架中序列化一个。要实现这一点,可以使用嵌套模型的序列化程序作为序列化程序字段:
class EcoleSerializer(serializers.ModelSerializer):
coordonnee = CoordonneesSerializer()
class Meta:
model = Ecole
#our fields
fields = ('id', 'nomEcole', 'numTel', 'coordonnee')