0
我擴展了一個模型,但相關模型沒有正確保存到數據庫。 下面我只打電話SupplyAddress()
,而不是通過SupplyAddress.objects.create()
創建並保存它的一個實例。但是,如果我嘗試這樣做,那麼相關的地址(和用戶)還沒有創建,以防止存儲。保存用戶的最佳方式是什麼,Address
和SupplyAddress
?擴展模型不保存相關表
models.py
class Address(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
house_name_number = models.CharField(max_length=255, verbose_name="house name or number")
street_name = models.CharField(max_length=255)
town_city = models.CharField(max_length=255)
county = models.CharField(max_length=255)
postcode = models.CharField(max_length=8)
time_stamp = models.DateField(auto_now=True)
class SupplyAddress(models.Model):
address = models.OneToOneField(Address)
region = models.ForeignKey(Region, null=True)
occupied = models.BooleanField()
forms.py
class SupplyAddressForm(forms.ModelForm):
occupied = forms.BooleanField()
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
data = self.cleaned_data
supply_address = models.SupplyAddress(
occupied=data['occupied'],
)
self.instance.supplyaddress = supply_address
return self.instance
class Meta:
model = Address
fields = ['house_name_number',
'street_name',
'town_city',
'county',
'same_address',
'move_in_date',
'postcode',
]
views.py
.....
address = form.save(commit=False)
address.user = user
address.save()
感謝BU t在'Meta'' fields'列表中'佔用'會導致錯誤'django.core.exceptions.FieldError:爲地址指定的未知字段(已佔用)「,因爲佔用位於相關型號SupplyAddress上。刪除這個,我得到一個錯誤,由於'SupplyAddress.objects.create()'有一個空的條目爲必填字段地址(它需要一個相關模型地址的實例) – Yunti
是的,你是對的。不需要在字段中添加。嘗試保存方法。 – zaidfazil