Я пытаюсь изменить root и имя элементов списка в соответствии с требованиями API. Я не хочу изменять класс XMLRenderer в renderer.py, потому что я мог бы использовать его снова, я просто хочу использовать представление для настройки.
Ниже приведены классы сериализатора, класс представления и выходные данные
класс сериализатора
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = TypeCategory
fields = '__all__'
class ZoneSerializer(serializers.ModelSerializer):
type = CategorySerializer(many=True, read_only=True)
class Meta:
model = Type
fields = ('TypeDesc', 'type')
в представлении
class ZoneLists(APIView):
renderer_classes = (JSONRenderer, XMLRenderer)
def get(self, request):
zone1 = Type.objects.all()
serializer = ZoneSerializer(zone1, many=True)
return Response(serializer.data)
Вывод
<root>
<list-item>
<TypeDesc>NORMAL</TypeDesc>
<type>
<list-item>
<id>5</id>
<Category>Normal</Category>
<Type>1</Type>
</list-item>
</type>
</list-item>
<list-item>
<TypeDesc>ZONES</TypeDesc>
<type>
<list-item>
<id>9</id>
<Category>Zone manager</Category>
<Type>4</Type>
</list-item>
<list-item>
<id>10</id>
<Category>zone officials</Category>
<Type>4</Type>
</list-item>
</type>
</list-item>
</root>