Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2014, 17:13
Avatar de Kristhoff
Kristhoff
 
Fecha de Ingreso: abril-2009
Ubicación: Popayán - Cauca
Mensajes: 550
Antigüedad: 15 años, 6 meses
Puntos: 12
Información Restricciones sobre ManyToMany

Hola!
estoy aprendiendo django y me he topado con un pequeño problemita a la hora de crear relaciones muchos a muchos, y es que me permite crear varias instancias sobre la misma tabla de relación con los mismos datos, entonces, quisiera saber si es posible poner constraints para que solo se permita un único registro del par de id, y si es posible alguna restricción del tipo *..x (muchos a x valor).
El modelo que sigo es el siguiente (El de la documentación oficial de django)
Código Python:
Ver original
  1. class Persona(models.Model):
  2.     id = models.AutoField(primary_key=True)
  3.     nombre = models.CharField(max_length=50, verbose_name='Nombre')
  4.     def __str__(self):
  5.         return self.nombre
  6.  
  7. class Grupo(models.Model):
  8.     id = models.AutoField(primary_key=True)
  9.     nombre = models.CharField(max_length=50, verbose_name='Nombre')
  10.     miembros = models.ManyToManyField('Persona', through='Membresia')
  11.     def __str__(self):
  12.         return self.nombre
  13.  
  14. class Membresia(models.Model):
  15.     persona = models.ForeignKey('Persona')
  16.     grupo = models.ForeignKey('Grupo')
  17.     fechaIngreso = models.DateField(verbose_name='Fecha de ingreso')
Datos en el modelo Persona:

Datos en el modelo Grupo:

Al registrar las mismas instancias en el modelo membreía, django me lo permite:

Lo que se haría normalmente es agregar a la tabla un constraint donde persona_id y grupo_id sean la llave primaria, pero en django no se permiten llaves compuestas.
__________________
"I need metal in my life, just like an eagle needs to fly..."