python - django rest 框架序列化器允许额外的字段
问题描述
我正在为视图创建一个序列化程序。它不是 ModelSerializer。此序列化程序包含要在请求中发送的可能字段。我注意到在请求中我可以发送未出现在序列化程序中的字段,并且它通过了序列化程序验证。
例如,这个序列化器:
class MySerializer(serializers.Serializer):
days = serializers.IntegerField(required=False)
users_list = serializers.ListField(child=serializers.CharField(), required=False)
class Meta:
fields = [
'days',
'users_list'
]
在视图中我这样做:
class UserValuesViewSet(viewsets.ModelViewSet):
serializer_class = MySerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
return Response(status=status.HTTP_201_CREATED)
我可以看到调用了序列化程序,并且当发送错误的值类型时,我确实得到了一个异常,但是当发送没有出现在序列化程序“字段”中的字段时,它也通过了验证。
例如:
data = {
'days': '7',
'users_list': ['1234', '123456'],
'some_key': 'some_value'
}
如何强制从序列化程序发送可能的字段?