Django 序列化程序仅序列化foreing键关系中的某些字段
我正在尝试序列化两个由foreing键链接的嵌套模型:Django 序列化程序仅序列化foreing键关系中的某些字段,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我正在尝试序列化两个由foreing键链接的嵌套模型: class Category(models.Model): sp = models.ForeignKey('species.Sp', on_delete=models.CASCADE, related_name='species_category') category_name = models.CharField(max_length=50) class Catch(models.Model): weight =
class Category(models.Model):
sp = models.ForeignKey('species.Sp', on_delete=models.CASCADE, related_name='species_category')
category_name = models.CharField(max_length=50)
class Catch(models.Model):
weight = models.IntegerField()
category = models.ForeignKey('species.Category', on_delete=models.CASCADE,)
我知道可以使用depth
选项,但它可以序列化相关模型的所有字段,例如:
class CatchesSerializer(serializers.ModelSerializer):
class Meta:
model = Catch
fields = ['id', 'weight', 'category', ]
depth = 1
[
{
"id": 335,
"weight": 4710,
"category": {
"sp": 41,
}
},
...
]
返回
[
{
"id": 335,
"weight": 4710,
"category": {
"id": 1,
"category_name": "1",
"sp": 41
}
},
...
]
如何仅序列化相关模型的某些字段?例如:
class CatchesSerializer(serializers.ModelSerializer):
class Meta:
model = Catch
fields = ['id', 'weight', 'category', ]
depth = 1
[
{
"id": 335,
"weight": 4710,
"category": {
"sp": 41,
}
},
...
]
序列化程序可以是,您可以尝试:
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['sp']
class CatchesSerializer(serializers.ModelSerializer):
category = CategorySerializer()
class Meta:
model = Catch
fields = ['id', 'weight', 'category']
class CategorySerializer(serializers.ModelSerializer):
类元:
型号=类别
字段=['sp']
类CatchesseSerializer(serializers.ModelSerializer):
类别=类别序列化程序()
类元:
模型=捕获
字段=['id'、'weight'、'category']