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)