Проверять, существует ли уникальное значение перед его созданием

Когда 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.

Любая помощь приветствуется. Спасибо!

13
задан Peter O 8 May 2011 в 18:18
поделиться