2016-07-13 5 views
0

私はすべてのフィールドが必要なときに必要なModelFormを持っています。私はこのフォームをHTML形式でレンダリングすると、それらのフィールドに必要なすべてのデータを提供しますが、サブミットをクリックしますが、フォームはis_validの検証に失敗し、エラーを出力すると、すべてのシングル入力は "このフィールドは必須です"というエラーを返します。DjangoのModelFormはデータの受信に失敗します

ここでの問題は、すべてのフィールドにデータを提供することですが、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> 

答えて

2

あなたはなく、GETの場合は、何らかの理由で、POSTブロックでフォーム上のプレフィックスを設定しています。したがって、フィールドは接頭辞なしでレンダリングされますが、送信時には接頭辞付きのフィールドが検索されます。

ここではプレフィックスを使用する理由は何もないようです。それを除く。

+0

Danさんが問題でした! – John

関連する問題