Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

154
Views
Detectar inserciones duplicadas al agregar una relación de muchos a muchos

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?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

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() ).

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!