通过序列化程序django休息框架时传递额外的数据

时间:2017-08-03 17:47:26

标签: python django api serialization django-rest-framework

我希望在序列化程序中传递额外的数据,但无法这样做。以下是我的代码 views.py

device_id = request.META.get('HTTP_DEVICE', '')
user_data = request.data
serializer = UserSerializer(data=user_data)

我想用user_data传递设备ID。我尝试了一本字典,但它没有得到数据。建议语法

2 个答案:

答案 0 :(得分:0)

您的问题缺乏关于模型声明或序列化程序的任何实质性细节。但是,这看起来仍然是错误的。你不应该做这样的事情。

相反,你的模型应该是这样的

class User(model):

     # declarations of id, account_name, HTTP_DEVICE, etc.

然后是你的序列化程序,

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', 'HTTP_DEVICE', 'account_name')

然后,序列化器将具有所有这些字段。

请参考django rest framework documentation.

答案 1 :(得分:0)

您可以将上下文传递给您的Serializer,如:

serializer = UserSerializer(data=request.data, context={'YOUR_CONTEXT': CONTEXT_OBJ})

然后在您的验证方法中获取它:

    def validate(self, data):
        CONTEXT_OBJ = self.context.get('YOUR_CONTEXT')
        ...

我希望这可以帮到你!

祝你好运!