Cuando Django ejecuta .save() en un atributo de clave principal, primero hace un SELECCIONAR para ver si ya existe, luego decide si hacer un INSERT o una ACTUALIZACIÓN. ¿Hay alguna manera de hacer elegantemente lo mismo para un campo clave único pero no primario?Compruebe si existe un valor único antes de crearlo
Básicamente, si el modelo se parece a esto:
class Subject(models.Model):
name = models.CharField(max_length=64, unique=True)
me gustaría hacer lo siguiente sin lanzar un error
>>> s=Subject(name="A new subject")
>>> s.save()
>>> s
<Subject: A subject>
>>> s=Subject(name="A new subject")
>>> s.save()
--- django.db.utils.IntegrityError: column name is not unique
A la inversa, podría hacer 'nombre' del pk, pero No estaba seguro de una forma elegante de Django para hacer identificadores de autosincorporación únicos que no sean únicos.
Cualquier ayuda es apreciada. ¡Gracias!
Pero [no intente] (https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects) para usar el administrador de modelos ('self.objects.filter .. .') desde dentro de la instancia modelo. Tendrás que hacer 'Subject.objects.filter ...' – hobs