He aquí un ejemplo:¿Cómo actualizar el campo manytomany en Django?
Si tengo estas clases
class Author(models.Model):
name = models.CharField(max_length=45)
class Book(models.Model):
name = models.CharField(max_length=45)
authors = models.ManyToManyField(Author)
En la base de datos que tengo un autor con el nombre "George" y otra con el nombre de "Georfe". El último es un error. Entonces, lo que quiero es que en cada Libro que tenga "Georfe" como uno de sus Autor lo reemplace por el Autor "George".
En SQL es realmente fácil de hacer. Si ID de "George" = 3 y la identificación de "Georfe" = 7 y el nombre de la tabla relación es "author_book":
UPDATE author_book SET id=3 WHERE id=7;
¿Es posible hacer eso con el ORM de Django?
he encontrado una manera de hacerlo: a través de bucle que todos los libros relacionados del autor introducida por error y hacer:
book.authors.add(Author.objects.get(id=3))
book.authors.remove(Author.objects.get(id=7))
Pero no encuentro esta solución muy elegante y eficiente. ¿Hay una solución sin el bucle?
Si esta es una operación única para corregir algunos errores tipográficos, ¿por qué no simplemente ejecutar el SQL sin procesar? – thedz
Los datos en la base de datos provienen de una antigua base de datos de creación de archivos y hay muchos errores tipográficos que corregir. No quiero arreglar todos los errores tipográficos solo. Deseo que mi cliente pueda hacerlo en la interfaz de administración. – Etienne