当我调用我的API(curl)时,我得到以下内容:
{"id": 1, "name": "Sword", "persona": [1]}
我正在获得' id'角色,但不是内在的属性。我该怎么做?
Models.py:
class Persona(models.Model):
name = models.CharField(max_length=255)
description = models.CharField(max_length=255)
icon = models.CharField(max_length=255,default='1')
def __str__(self):
return self.name
class Equipment(models.Model):
personas = models.ManyToManyField(Persona)
name = models.CharField(max_length=255)
def __str__(self):
return self.name
Serializers.py:
class EquipmentSerializer(serializers.ModelSerializer):
personas = serializers.PrimaryKeyRelatedField(queryset=Persona.objects.all(), many=True)
name = serializers.CharField(max_length=255)
class Meta:
model = Equipment
fields = ('id', 'name', 'persona')
答案 0 :(得分:1)
您需要两个步骤:
创建Persona serializer class
:
class PersonaSerializer(serializers.ModelSerializer):
class Meta:
model = Persona
然后您可以将此序列化程序“链接”到Equipement
一个:
class EquipmentSerializer(serializers.ModelSerializer):
personas = PersonaSerializer(source='personas', many=True)
name = serializers.CharField(max_length=255)
class Meta:
model = Equipment
fields = ('id', 'name', 'personas')
为了更深入地理解上述内容,请看一下这个典型的答案:
How do I include related model fields using Django Rest Framework?
祝你好运:)