Django的REST框架 - 对GET和POST

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?

+0

你可以制定该澄清的是,你解决不了实际问题的一个问题? – trixn

你会使用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