Когда Django запускает .save () для атрибута первичного ключа, он сначала выполняет SELECT, чтобы увидеть, существует ли он уже, а затем решает, следует ли выполнить INSERT или ОБНОВИТЬ. Есть ли способ элегантно сделать то же самое для уникального поля, но не для поля первичного ключа?
В основном, если модель выглядит так:
class Subject(models.Model):
name = models.CharField(max_length=64, unique=True)
Я бы хотел сделать следующее, не выдавая ошибки
>>> 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
И наоборот, я мог бы сделать «name» pk, но я не был уверен в элегантном способе Django сделать уникальные автоматически увеличивающиеся идентификаторы, отличные от pk.
Любая помощь приветствуется. Спасибо!