私はpy.test
を呼び出すと実行されるテストでdjangoプロジェクトを持っていますが、最近は外部キー制約をチェックしていません。どのようにして外部キー制約をチェックすることができますか?sqlliteを使用してpytestで外部キーチェックを有効にする方法
明らかに、foreign key constraints weren't even possible until sqlite 3ですが、私はsqlite用のcliを持っていないので、実際に実行しているバージョンはわかりませんが、ちょうどdjangoによって自動的にインクルードされていますか? (私はdjango 1.9.10を使用しています)、sqlite 3は2009年にリリースされました。
おそらくit must still be enabled by the application at runtime, using the PRAGMA foreign_keys command.ですが、私のテストでそのようにする方法はわかりません。
[UPDATE] それで、sqliteはそのままの状態でチェックしていないようです。
class Referenced(models.Model):
pass
class Referencer(models.Model):
fk = models.ForeignKey(Referenced)
>>> Referencer.objects.create(fk_id=-1)
<Referencer>
>>> Referencer.objects.all()[0].fk
DoesNotExist