【发布时间】:2011-05-27 07:29:09
【问题描述】:
我定义了一个名为 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 很陌生,谁能告诉我为什么 shell 忽略了 unique 字段?
【问题讨论】:
-
这并不能回答您关于强制执行“唯一”的问题,但您可能会发现这很有用:code.google.com/p/django-countries。我不是作者,但我在一两个项目中使用过它。
标签: django django-shell