Entonces, digamos que tengo un modelo definido de la siguiente manera:
from django.contrib.postgres.fields import JSONField class Job(models.Model): ... json_data = JSONField(default=dict, blank=True) El campo approval_coefficient tiene una clave denominada coeficiente_aprobación con valores que van de 0 a 1. Quiero actualizar todos los trabajos con json_data__coeficiente_aprobación como 0,25 a 0,75 sin activar ninguna señal posterior a guardar, en una consulta . Básicamente, quiero usar .update() para trabajar con JSONfield.
Job.objects.filter(json_data__approval_coefficient=0.25).update(json_data...)
esto no funciona (Tal vez haya 50 claves más para cada objeto de trabajo en el campo json_data, y no quiero tocarlas/actualizarlas en absoluto. Solo me preocupa esta clave específica).
Aunque, puedo obtener todos los trabajos usando la consulta de filtro, recorrerla y actualizar cada una de las entradas una por una. Pero esto hace varias consultas de escritura en la base de datos y también activa señales post_save, que no es lo que quiero.
Al investigar un poco, encontré este y este PR que nunca se fusionaron en Django.
¿Como va esto?
Python 3.6.8 Django (2, 2, 0, 'final', 0)