フィールドが隠されていますが、modelformで指定されていると、検証に合格しません。以下のフォームは、コンストラクタのポストコードデータを渡しても、ポストコードフィールドの検証に合格しません。それを保存できるように、検証に正しく合格するためにデータをどのようにアタッチするのですか?Django隠しフィールドを持つモデルフォームは、検証をパスしません
例えば
class SupplyAddressForm(forms.ModelForm):
full_address = forms.ChoiceField()
def __init__(self, postcode, *args, **kwargs):
super().__init__(*args, **kwargs)
raw_addresses_data = get_full_address(postcode)
addresses = raw_addresses_data['data']['addresses']
...........
self.fields['postcode'].initial = postcode
def save(self, commit=False):
address = super().save(commit=False)
cd = self.cleaned_data
full_address = cd['full_address']
full_address = json.loads(full_address)
......
return address
class Meta:
model = Address
fields = [
'supply_months',
'supply_years',
'postcode',
'residential_status',
]
widgets = {
'postcode': forms.HiddenInput
}
提供されたデータのギャップを埋めるために初期データは使用されません。 –
レンダリングされたフォームでは、 'postcode'フィールドに値がありますか? –