0

入力が指定されていない場合に NicheSkills フォームの最初のフィールドに検証を設定し、保存ボタンをクリックする方法.最初の行に入力が指定されていない場合、「このフィールドは必須です」というエラーが表示されるようにします。親切に私を助けてください。

Models.py:

class NicheSkills(Audit):
    user                    = models.ForeignKey(User, null = True, blank = True)      
    title                   = models.CharField(max_length = 15)    
    special_skill           = models.CharField(max_length = 15)

Forms.py:

class NicheSkillsForm(forms.Form):
    title                   = fields.CharField(max_length=150)
    special_skill           = fields.CharField(max_length=150)

NicheFormset = formsets.formset_factory(NicheSkillsForm, extra = 1)  

テンプレート:

<table cellpadding="3" cellspacing="3" border="0" style="margin-left:65px;">
                        <tbody>
                            <tr><td>{{ form5.current_role }}</td></tr>
                            <tr><td><span class = "forget-errors">{{ form5.current_role.errors }}</span></td></tr>
                            <tr><td align="center"><input type="button"   id="form5" name="save" value="Save" onclick = "save_form(this.id)" /></td></tr>
                        </tbody>
</table>

Views.Py

NicheFormset = formsets.formset_factory(NicheSkillsForm, extra = 0)
if request.method == "POST":
    formset6 = NicheFormset(request.POST, prefix='fs6')
    if formset6.is_valid():
        for values in formset6.cleaned_data:
            niche_details = NicheSkills(
                                    title          = values['title'],
                                    special_skill     = values['special_skill'])

            niche_details.save()  
else:
    NicheFormset = formsets.formset_factory(NicheSkillsForm, extra = 1)
    formset6 = NicheFormset(prefix='fs6')        
return render_to_response('test.html', locals(), RequestContext(request))   
4

1 に答える 1

1

Django Forms validationを使用clean()し、フォーム クラスのメソッドを定義し、その中のフィールドを検証します。

フォーム全体のエラーを表示したい場合はValidationError、適切なエラーの説明とともに a を発生させます。

フィールド関連のエラー (最初の空白フィールドに接続されているなど) を表示したい場合は、 を変更する必要がありますself._errors[field]

それはすべて、ドキュメントのリンクされた部分で説明されています。使用例はself._errors、最後のコード スニペットの最後にあります。

于 2012-05-29T22:49:41.020 に答える