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 originalclass Persona(models.Model):
id = models.AutoField(primary_key=True)
nombre = models.CharField(max_length=50, verbose_name='Nombre')
def __str__(self):
return self.nombre
class Grupo(models.Model):
id = models.AutoField(primary_key=True)
nombre = models.CharField(max_length=50, verbose_name='Nombre')
miembros = models.ManyToManyField('Persona', through='Membresia')
def __str__(self):
return self.nombre
class Membresia(models.Model):
persona = models.ForeignKey('Persona')
grupo = models.ForeignKey('Grupo')
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.