djangoは主キーの一意性を強制しますか?
ここのドキュメントはそう示唆しているようですが、クラスを次のように定義すると:
class Site(models.Model):
id = models.IntegerField(primary_key=True)
テストケースでこの制約をテストします。
class SiteTestCase(TestCase):
def setUp(self):
self.site = Site(id=0, name='Site')
self.site.save()
def tearDown(self):
self.site.delete()
def test_unique_id(self):
with self.assertRaises(IntegrityError):
badSite = Site(id=0, name='Bad Site')
badSite.save()
badSite.delete()
テストは失敗します。
通常のフィールド(primary_key = False、unique = True)でテストすると、例外が正しく発生します。idフィールドにunique=Trueを設定しても、結果は変わりません。
ここで欠落しているprimary_keyフィールドについて何かありますか?
必要に応じて、私のデータベースバックエンドはMySQLです。