update queryset password framework create python django serialization django-rest-framework django-serializer

python - queryset - listfield django rest framework



EdiciĆ³n del objeto serializador django-rest-framework antes de guardar (2)

Quiero editar un objeto serializador django-rest-framwork antes de que se guarde. Así es como lo hago actualmente:

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()

¿Cómo puedo hacerlo con un objeto serializador 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()


Puede editar el objeto del serializador antes de guardar el serializador:

if serializer.is_valid(): serializer.object.user_id = 15 # <----- this line serializer.save()


Ahora editado para el marco REST 3

Con REST framework 3 el patrón ahora es:

if serializer.is_valid(): serializer.save(user_id=15)

Tenga en cuenta que los serializadores ahora no exponen nunca una instancia de objeto no guardado como serializer.object , sin embargo, puede inspeccionar los datos validados sin procesar como serializer.validated_data .

Si está utilizando las vistas genéricas y desea modificar el comportamiento de guardado, puede usar los perform_create y / o perform_update ...

def perform_create(self, serializer): serializer.save(user_id=15)