我使用Django 1.6,我有2種型號引用對方,像這樣:的Django如何插入到表中的相互引用
class Person(models.Model):
address = models.ForeignKey('Address', blank=False)
class Address(models.Model):
person = models.ForeignKey(Person, blank=False)
我之所以有環外鍵的是對數據的完整性。因爲地址可能只能分配給一個用戶,並且用戶必須至少有一個地址。是的,我知道我可以沒有這種生活,但我寧願不。
我使用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()
任何建議我做錯了嗎?有沒有更好的方法呢?
如果您要返回此人,您如何才能在模板文件中獲取此人的地址? –