我发现的唯一解决方案,因为我正在发送POST,我在views.py上使用了以下内容,如果有正确的方法来执行此操作,请使用request.DATA,因为当它传递给序列化程序时.is_valid()即使我发送一个空帖子也是如此,它总是创建一个新的sessionid,而不是之前验证它。我已经尝试过使用pre_save(),但我不知道它是如何工作的,文档对我来说似乎是blackmagic。
views.py
@api_view(['POST'])
def startCall(request):
if request.method == 'POST':
API_KEY = '00000'
API_SECRET = '000000000000000'
OTSDK = OpenTokSDK.OpenTokSDK(API_KEY, API_SECRET)
opentok_session = str(OTSDK.create_session().session_id)
post_values = request.POST.copy()
post_values['opentok_sessionid'] = str(opentok_session)
serializer = startCallSerializer(data=post_values)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class startCallSerializer(serializers.ModelSerializer):
class Meta:
model = call
fields = ('tutor', 'billed')
exclude = ('tutor','billed')