Django的REST框架 - 对GET和POST
问题描述:
鉴于2个主力车型序列化的关系是不同的:TransportOrder和公司以多对多的关系,通过TransportOrderConsumer。我想实现以下目标。Django的REST框架 - 对GET和POST
GET TransportOrder:
TransportOrder领域被列为以及为超链接,给消费者一个列表。 我已经通过对本公司的如下关系和串行
consumers = models.ManyToManyField(Company, through = "TransportOrderConsumer")
class TransportOrderReadSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = TransportOrder
# fields = ('id', 'producer_system_code', 'status','producer', 'created_at')
fields = (
'id',
'producer',
'producer_system_code',
'status',
'producer',
'created_at',
'updated_at',
'consumers'
)
# read_only_fields = ('updated_at')
POST调拨订单做到了这一点: 在POST串,我想巢TransportOrderConsumerSerializer但称之为“消费者”,以便有get和post调用之间的一致性。
为了总结这个问题,是否有可能在一个序列化程序中将消费者与公司对象相关联,并且在第二个(POST)中将消费者字段设置为TransportOrderConsumerSerializer?
答
你会使用get_serializer_class就什么串您要使用的请求类型切换。
示例代码:
from rest_framework import viewsets
class MyViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
def get_serializer_class(self):
"""
:return: serializer class based on the request type
"""
if self.action == 'retrieve':
return ps.MyModelDetailSerializer
elif self.action == 'list':
return ps.MyModelListSerializer
elif self.action == 'create':
return ps.MyModelCreateSerializer
else:
return ps.MyModelUpdateSerializer
你可以制定该澄清的是,你解决不了实际问题的一个问题? – trixn