Python 如何使用DRF3在Django中获取整个JSON对象?

Python 如何使用DRF3在Django中获取整个JSON对象?,python,json,django,Python,Json,Django,当我调用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

当我调用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')
您需要两个步骤:

  • 创建一个
    角色序列化程序类

    class PersonaSerializer(serializers.ModelSerializer):
        class Meta:
            model = Persona
    
  • 然后您可以将此序列化程序“链接”到
    设备
    一个:

    class EquipmentSerializer(serializers.ModelSerializer):
        personas = PersonaSerializer(source='personas', many=True)
        name = serializers.CharField(max_length=255)
    
        class Meta:
            model = Equipment
            fields = ('id', 'name', 'personas')
    
  • 为了更深入地理解上述内容,请查看以下示例性答案:

    祝你好运:)