Когда Django запускает .save() в атрибуте первичного ключа, он сначала выполняет SELECT, чтобы узнать, существует ли он, а затем решает, следует ли делать INSERT или UPDATE. Есть ли способ элегантно сделать то же самое для уникального, но не первичного ключевого поля?
В принципе, если модель выглядит так:
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
И наоборот, я мог бы сделать "имя" pk, но я не был уверен в элегантном способе Django, чтобы сделать уникальные автоинкрементные идентификаторы non-pk.
Любая помощь приветствуется. Спасибо!