Ответ 1
Вы можете отредактировать объект serializer перед сохранением сериализатора:
if serializer.is_valid():
serializer.object.user_id = 15 # <----- this line
serializer.save()
Я хочу отредактировать объект сериализатора 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
serializer?
@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()
Вы можете отредактировать объект serializer перед сохранением сериализатора:
if serializer.is_valid():
serializer.object.user_id = 15 # <----- this line
serializer.save()
Теперь отредактирован для REST framework 3
С REST framework 3 теперь имеет место шаблон:
if serializer.is_valid():
serializer.save(user_id=15)
Обратите внимание, что сериализаторы теперь никогда не выставляют экземпляр несохраненного объекта как serializer.object
, однако вы можете проверить необработанные проверенные данные как serializer.validated_data
.
Если вы используете общие представления и хотите изменить поведение сохранения, вы можете использовать крюки perform_create
и/или perform_update
...
def perform_create(self, serializer):
serializer.save(user_id=15)