私はdjango 1.6を使用しており、2つのモデルが次のように相互に参照しています:
class Person(models.Model):
address = models.ForeignKey('Address', blank=False)
class Address(models.Model):
person = models.ForeignKey(Person, blank=False)
循環外部キーを使用する理由は、データの整合性のためです。アドレスは正確に 1 人のユーザーに割り当てられる可能性があり、ユーザーは少なくとも 1 つのアドレスを持っている必要があるためです。はい、これがなくても生きていけることはわかっていますが、むしろそうはなりません。
外部キーで PostgreSQL を使用しており、DEFERRABLE INITIALLY DEFERRED
トランザクションを使用してそれらのテーブルにデータを挿入したいと考えています。ただし、 を使用しようとするとtransaction.atomic():
、ビュー内で期待どおりに動作しません。
これが私がやっていることです:
with transaction.atomic():
addr = Address(street='125 fake street')
addr.save()
person = Person()
person.address_id = addr.id
addr.person_id = person.id
addr.save()
person.save()
しかし、私IntegrityError
は最初に電話をかけ続けますaddr.save()
私が間違っていることは何か提案はありますか? そのためのより良い方法はありますか?