Python 如何在Django Rest框架中接收我不知道的json字段';我不想储存?

Python 如何在Django Rest框架中接收我不知道的json字段';我不想储存?,python,django,serialization,django-rest-framework,Python,Django,Serialization,Django Rest Framework,我正在使用Django Rest框架为以下json构建一个api: { "x_id": 123, "message_type": "count", "aggregate": [{"id": 1, "count": 3}], } 聚合中的json对象可以是两种不同的类型,这取决于消息类型。因此,如果message\u type等于count聚合数组中的对

我正在使用Django Rest框架为以下json构建一个api:

{
    "x_id": 123,
    "message_type": "count",
    "aggregate": [{"id": 1, "count": 3}],
}
聚合中的json对象可以是两种不同的类型,这取决于
消息类型
。因此,如果
message\u type
等于
count
聚合数组中的对象如上所示,如果
message\u type
等于
person
,则聚合数组中的对象完全不同

对于两种不同类型的聚合,我有两个单独的模型,我希望根据
消息类型
将它们存储在这些表中。但是由于
message\u type
不是任何模型的一部分,因此未对其进行验证,我无法在序列化程序
create()
方法中使用它:

class ObservationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Observation
        fields = ['x_id']

    def create(self, validated_data):
        print("message_type" in validated_data)  # => prints "False"
        return Observation.objects.create(**validated_data)

是否有人知道如何将字段
消息类型设置为必需,以便我可以使用它来决定要在哪个表中存储聚合?

您可能需要将
消息类型
用作GET参数

class ASerializer(serializers.ModelSerializer):
    class Meta:
        model = A
        fields = '__all__'


class BSerializer(serializers.ModelSerializer):
    class Meta:
        model = B
        fields = '__all__'
视图应该是这样的

class MyView(APIView):
    def post(self, request, *args, **kwargs):
      message_type = request.GET.get('message_type', None)
      if message_type is not None:

          if message_type == 'count':
              serializer = ASerializer(data=request.data)
          if message_type == 'person':
              serializer = BSerializer(data=request.data)

          if serializer.is_valid():
              serializer.save()
          return Response(status=HTTP_200_OK)
      return Response(status=status.HTTP_400_BAD_REQUEST)
请求看起来像

POST /api/view-path/?message_type=count or /api/view-path/?message_type=person
{
  # Post body fields... 
}