pelicula español descargar cantante python django

python - español - Django unique_together no evita duplicados



django wikipedia (4)

Como aganders3 menciona, la restricción se aplica en el nivel de la base de datos; Aunque supongo que está utilizando una base de datos como SQLite que no admite este tipo de restricción.

La razón por la que todo funciona como se espera a través del administrador es que está haciendo la comprobación de la singularidad en sí misma (no se basa estrictamente en la base de datos para señalar violaciones de restricciones).

Puede cambiar a un motor de base de datos que admita este tipo de restricción de unicidad (ya sea que MySQL o Postgres funcionaría) o podría agregar la verificación utilizando señales: http://djangosnippets.org/snippets/1628/

Claramente no estoy entendiendo cómo hacer esto correctamente, ¿alguien me puede aclarar? Aquí está el modelo:

class Team(models.Model): teamID=models.CharField(max_length=255) #this will be generated on the iPad name=models.CharField(max_length=255) slug=models.SlugField(max_length=50) teamNumber=models.CharField(max_length=30) checkIn=models.DateTimeField(default=datetime.now()) totalScore=models.IntegerField(max_length=6) class Meta: unique_together = ("teamID", "name", "slug", "teamNumber", "totalScore")

Si lo envío dos veces seguidas se guarda todo. ¡Ay!


Encontré este enfoque útil sin agregar campos innecesarios

class Request(models.Model): user = models.ForeignKey(User, related_name=''request_list'', on_delete=models.CASCADE) requested_user = models.ForeignKey(User, on_delete=models.CASCADE) request_date = models.DateField(default=timezone.now()) request_status = models.BooleanField(default=False) def save(self, *args, **kwargs): # Checking for duplicate requests try: request = Request.objects.get(user=self.user, requested_user=self.requested_user) raise ValidationError(''Duplicate Value'', code=''invalid'') except self.DoesNotExist: super(Request, self).save(*args, **kwargs) # checking for reversed duplicate requests try: request_new = Request.objects.get(requested_user=self.user, user=self.requested_user) raise ValidationError(''Duplicate Value'', code=''invalid'') except self.DoesNotExist: super(Request, self).save(*args, **kwargs) def __str__(self): return self.user.username + ''------>'' + self.requested_user.username



Sí, el parámetro unique_together recibe como entrada una tupla de tuplas, no he probado tuplas de más de dos elementos pero debería funcionar

para su ejemplo:

unique_together = (("teamID", "name"), ("slug", "teamNumber"))

o:

unique_together = (("teamID", "name", "slug", "teamNumber", "totalScore"))