我希望向现有的序列化器中添加另一个类。我可以做简单的序列化程序,但是这很棘手,因为我要添加的第二个类位于models.py
-有人有聪明解决方案的序列化程序类之后。
models.py
如下:
class Pokemon(models.Model):
id = models.AutoField(primary_key=True)
type = models.OneToOneField(Type, on_delete=models.PROTECT)
stat = models.ForeignKey(Stat, on_delete=models.PROTECT, null=True)
class Skills(models.Model):
id = models.AutoField(primary_key=True)
pokemon = models.ForeignKey(Pokemon, on_delete=models.PROTECT)
owner = models.ForeignKey(Owner, on_delete=models.PROTECT, related_name='name')
和serializers.py
:
class PokemonSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Pokemon
fields = ('id', 'type', 'stat')
我当前拥有的显示是:
{
"id": 2228,
"type": "http://localhost:8000/type/4628/",
"stat": "99",
}
我要拍摄的显示是:
{
"id": 2228,
"type": "http://localhost:8000/type/4628/",
"stat": "99",
"owner": "bob doe"
}
非常感谢您!
答案 0 :(得分:0)
您应该添加名为所有者的新序列化器
class Owner(serializers.ModelSerializer):
class Meta:
model = skills
fields = ('owner',)
在PokemonSerializer
中添加字段所有者
owner = Owner(many=True, read_only=True)
您可以阅读更多here
答案 1 :(得分:0)
您可以在CharField中使用source
class PokemonSerializer(serializers.HyperlinkedModelSerializer):
owner = CharField(source="owner.name")
class Meta:
model = Pokemon
fields = ('id', 'type', 'stat', 'owner')