[英]ModelForm in Django fails to receive data
我有一個ModelForm,所有字段都是我想要的。 當我使用HTML呈現此表單時,我提供了這些字段中所需的所有數據,單擊了提交,但是我的表單在進行is_valid驗證時失敗,並且在我打印錯誤時,每個輸入都返回以下錯誤:“此字段為必填字段。”
這里的問題是我向每個字段都提供了數據,但似乎Django由於某種原因未讀取它們。
視圖
if request.POST:
addressForm = AddressForm(request.POST, prefix="AddressForm")
if addressForm.is_valid():
return HttpResponseRedirect('/thanks/')
print(addressForm.errors)
addressForm = AddressForm()
return render(request, 'index.html', {'addressForm':addressForm})
形式
class AddressForm(forms.ModelForm):
class Meta:
model = Address
fields = ['AddressLine', 'StreetNumber', 'Country', 'City', 'PostalCode']
def __init__(self, *args, **kwargs):
super(AddressForm, self).__init__(*args, **kwargs)
self.fields['AddressLine'].widget.attrs.update({'class' : 'form-control'})
self.fields['StreetNumber'].widget.attrs.update({'class': 'form-control'})
self.fields['Country'].widget.attrs.update({'class': 'form-control'})
self.fields['City'].widget.attrs.update({'class': 'form-control'})
self.fields['PostalCode'].widget.attrs.update({'class': 'form-control'})
模型
class Address(models.Model):
AddressLine = models.CharField(max_length=100, blank=False)
StreetNumber = models.CharField(max_length=100, blank=False, default=0)
Country = models.ForeignKey(Country, blank=False)
City = models.CharField(max_length=100, blank=False)
PostalCode = models.CharField(max_length=10, blank=False)
的HTML
<div class="row">
<div class="form-group col-md-2">
{{ addressForm.StreetNumber }}
</div>
<div class="form-group col-md-10">
{{ addressForm.AddressLine }}
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
{{ addressForm.Country }}
</div>
<div class="form-group col-md-4">
{{ addressForm.City }}
</div>
<div class="form-group col-md-4">
{{ addressForm.PostalCode }}
</div>
</div>
正如我所說的錯誤是:
<ul class="errorlist">
<li>AddressLine
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
<li>City
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
<li>Country
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
<li>PostalCode
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
<li>StreetNumber
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
</ul>
由於某種原因,您已經在POST塊中的表單上設置了前綴,但在GET情況下卻沒有。 因此,呈現的字段沒有前綴,但是在提交時,表單正在尋找帶有前綴的字段。
似乎根本沒有理由使用前綴。 去掉它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.