¿Cómo ejecuto un updatey selectdeclaraciones en el mismo en querysetlugar de tener que hacer dos consultas: una para seleccionar el objeto y otra para actualizar el objeto
El equivalente en SQL sería algo como:
update my_table set field_1 = 'some value' where pk_field = some_value

updatemétodo como este, entonces las señales adjuntas a ese modelo u otras "cosas de código" no se ejecutarán contra los objetos. Solo un puntero de alguien que se quemó :)updatemétodo es ideal para actualizaciones masivas, pero debe activar una advertencia en su cabeza cuando lo use para revisar cualquier señal adjunta a ese objeto que también deba dispararse manualmenteMyModel.objects.filter(pk=some_value).update(field1=self.data)Los objetos de la base de datos de Django usan el mismo método save () para crear y cambiar objetos.
Ref .: https://docs.djangoproject.com/en/1.9/ref/models/instances/
fuente
Esta respuesta compara los dos enfoques anteriores. Si desea actualizar muchos objetos en una sola línea, vaya a:
De lo contrario, tendría que iterar sobre el conjunto de consultas y actualizar objetos individuales:
El enfoque 1 es más rápido porque solo realiza una consulta a la base de datos, en comparación con el enfoque 2, que realiza consultas de base de datos 'n + 1'. (Para n elementos en el conjunto de consultas)
El primer enfoque hace una consulta db, es decir, ACTUALIZAR, la segunda hace dos: SELECCIONAR y luego ACTUALIZAR.
La compensación es que, supongamos que tiene algún desencadenante, como la actualización
updated_ono cualquier campo relacionado, no se activará en la actualización directa, es decir, el enfoque 1.El enfoque 1 se usa en un conjunto de consultas, por lo que es posible actualizar varios objetos a la vez, no en el caso del enfoque 2.
fuente
¡solo en un caso en las
serializercosas, puedes actualizar de una manera muy simple!solo en un caso en las
formcosas!fuente
Django formes de Django Proper.