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

时间:2017-05-04 21:40:00

标签: 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.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')

1 个答案:

答案 0 :(得分:1)

您需要两个步骤:

  1. 创建Persona serializer class

    class PersonaSerializer(serializers.ModelSerializer):
        class Meta:
            model = Persona
    
  2. 然后您可以将此序列化程序“链接”到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')
    
  3. 为了更深入地理解上述内容,请看一下这个典型的答案:

    How do I include related model fields using Django Rest Framework?

    祝你好运:)