一意の名前フィールドを持つ 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 を初めて使用します。シェルが unique フィールドを無視する理由を教えてもらえますか?