Supongamos que hay dos modelos, A y B:
class A(models.Model): name = models.CharField(max_length=100) class B(models.Model): children = models.ManyToManyField(A) Estoy usando el método b.children.add() para agregar una instancia de A a b :
a = A.objects.get(pk=SOMETHING) b.children.add(a)Hasta donde yo sé, Django por defecto no permite relaciones duplicadas de muchos a muchos. Entonces no puedo agregar la misma instancia de A más de una vez.
Pero el problema está aquí, busco instancias de A con otra consulta, luego las recorro y las agrego una por una. ¿Cómo puedo detectar una relación duplicada? ¿El método add() devuelve algo útil?
Una mirada al código fuente revela que Django primero verifica si hay entradas que ya existen en la base de datos y luego solo agrega las nuevas. Sin embargo, no devuelve ninguna información a la persona que llama.
No está claro si realmente necesita detectar duplicados, o si solo quiere asegurarse de que no se agreguen a la base de datos. Si es esto último, entonces todo está bien. Si es lo primero, no hay forma de evitar acceder a la base de datos. Si está realmente preocupado por el rendimiento, siempre puede realizar la verificación y actualizar la tabla directa usted mismo (es decir, volver a implementar add() ).