我想在保存之前编辑django-rest-framwork
序列化程序对象。这就是我目前的做法 -
def upload(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid(): # All validation rules pass
obj = form.save(commit=False)
obj.user_id = 15
obj.save()
如何使用django-rest-framework
序列化程序对象进行此操作?
@api_view(['POST','GET'])
def upload_serializers(request):
if request.method == 'POST':
serializer = FilesSerializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
serializer.save()
答案 0 :(得分:56)
现已针对REST框架3进行了编辑
使用REST框架3,现在的模式是:
if serializer.is_valid():
serializer.save(user_id=15)
请注意,序列化程序不现在将未保存的对象实例公开为serializer.object
,但可以检查原始验证数据为{{1} }。
如果您正在使用通用视图并且想要修改保存行为,则可以使用serializer.validated_data
和/或perform_create
挂钩...
perform_update
答案 1 :(得分:23)
您可以在保存序列化程序之前编辑序列化程序的对象:
if serializer.is_valid():
serializer.object.user_id = 15 # <----- this line
serializer.save()