首先,创建一个视图,该视图将返回您感兴趣的MenuItemComponent实例。
class ListComponents(generics.ListAPIView): serializer_class = MenuItemComponentSerializer def get_queryset(self): """ Override .get_queryset() to filter the items returned by the list. """ menuitem = self.kwargs['menuitem'] return MenuItemComponent.objects.filter(menuItem=menuitem)
然后,您需要创建一个序列化器以提供所需的表示形式。您的示例比典型案例更有趣/更有趣,因此看起来像这样…
class MenuItemComponentSerializer(serializers.Serializer): url = ComponentURLField(source='component') name = Field(source='component.name') isReplaceable = Field()
字段“名称”和“ isReplaceable”可以仅使用默认的只读
Field类。
这里没有一个字段完全符合您的“ url”情况,因此我们将为此创建一个自定义字段:
class ComponentURLField(serializers.Field): def to_native(self, obj): """ Return a URL, given a component instance, 'obj'. """ # Something like this... request = self.context['request'] return reverse('component-detail', kwargs=kwargs, request=request)
我认为那应该是正确的。
这是用于只读序列化的-
如果您想要可写序列化,则需要研究重写
restore_object序列化器上的方法,并使用
WritableField或类似的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)