0
モデルフォームを拡張しましたが、関連モデルがデータベースに正しく保存されていません。 以下、私はSupplyAddress.objects.create()
経由でインスタンスを作成して保存するのではなく、SupplyAddress()
と呼んでいます。しかし、これを実行しようとすると、関連するアドレス(およびユーザー)はまだ保存されていません。ユーザーを保存する最も良い方法は、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 'Meta'フィールドリストに '占有'していると、' django.core.exceptions.FieldError:Addressに指定された未知のフィールド(占有されている) 'というエラーが発生し、関連モデルのSupplyAddressにあります。これを取り除くと、必要なフィールドアドレスのヌルエントリを持つ 'SupplyAddress.objects.create()'のエラーが発生します(関連するモデルアドレスのインスタンスが必要です) – Yunti
ええ、あなたは正しいです。フィールドを追加する必要はありません。 saveメソッドを試してください。 – zaidfazil