给定2个主要模型:TransportOrder和Company通过TransportOrderConsumer具有多对多关系。我想实现以下目标。
获取TransportOrder:
列出了TransportOrder字段以及到消费者的超链接列表。我已经通过以下关于Company和Serializer的关系完成了此任务
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调用之间保持一致。
总结一下问题,是否有可能在一个序列化器中使消费者与Company对象相关联,而在第二个序列化器(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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句