簡體   English   中英

Django中的ModelForm無法接收數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM