django 管理インターフェイスを使用して、会場と住所 (1:1 でマッピングされている) の両方を 1 つのフォームに挿入しようとしています。
私のモデルでは:
class Venue(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Address(models.Model):
states = {
...
}
countries = {
...
}
venue = models.OneToOneField('clubApp.Venue')
address_line1 = models.CharField("Address line 1", max_length=50)
address_line2 = models.CharField("Address line 2", max_length=50, blank=True)
suburb = models.CharField("Suburb", max_length=40)
state = models.CharField(max_length=3, choices=states)
country = models.CharField(max_length=9, choices=countries)
def __unicode__(self):
return "%s %s, %s, %s, %s" % (self.address_line1, self.address_line2, self.suburb, self.state, self.country)
そして私のadmin.pyで:
class AddressInline(admin.StackedInline):
model = Address
class VenueAdmin(admin.ModelAdmin):
inlines = [
AddressInline
]
admin.site.register(Venue, VenueAdmin)
挿入すると、「列 "address_id" の null 値が null 以外の制約に違反しています」という整合性エラーが発生します。これは、アドレスの前に会場をデータベース (postgres) に挿入したためだと思います。これを修正する正しい方法は何ですか?