Я определил класс с именем Country, который имеет уникальное поле имени.
class Country(models.Model):
class Meta:
verbose_name_plural = "Countries"
name = models.CharField(max_length=100, unique=True, null=False)
def __unicode__(self):
return self.name
На странице администратора это ведет себя так, как я ожидал.Создание страны, которая уже находится в базе данных, завершается неудачно с ошибкой «Страна с таким именем уже существует».Отлично.
Когда я пытаюсь проверить то же самое в интерактивном приглашении (manage.py shell
), такая ошибка не отображается.Вместо этого дубликат объекта просто добавляется в базу данных.
>>> from rack.models import Country
>>> usa = Country(name="United States of America")
>>> usa.save()
>>> canada = Country(name="United States of America")
>>> canada.save()
>>> canada.name
'United States of America'
>>> Country.objects.all()
[<Country: United States of America>, <Country: United States of America>]
Я совершенно новичок в Django, может кто-нибудь объяснить мне, почему оболочка игнорирует уникальное поле?