私はDjangoアプリケーションでフォームを使用しています。 このフォームを使用して値を設定し、再度値を変更します。編集時にのみ必要なフィールド
変更する場合は、理由を指定する必要がありますが、設定するときは指定しないでください。
値が[なし]の場合、フィールド「0120」が「none」に変更されますが、フィールドが入力されていないため、フィールドはrequired
であるため、ユーザーはフォームを送信できません。
確認をクリック:編集する際
はまた、値が事前に満たされている「理由」欄が満たされていないので、それはまた、エラーが表示されます。
任意の場所をクリックする前に:
私が編集するときにフィールドが必要なだけされるように、何ができるの?
編集:コード
ビュー
def change_grade(request, grade_id):
grade = get_object_or_404(Grade, id=grade_id)
if(request.method=='POST'):
form = GradeForm(request.POST)
if(form.is_valid()):
#save it
if(grade.grade is None):
form = GradeForm()
else:
form = GradeForm({'grade':grade.grade})
return render(...)
フォームテンプレートで
class GradeForm(forms.Form):
grade = forms.DecimalField()
reason = forms.CharField(widget=forms.Textearea(), required = True)
{%if grade.grade is None%}
<script>
window.onload = function(){
document.getElementById("id_reason").parentElement.style.display = "none";
}
</script>
{%endif%}
EDIT2:私は回避策を発見しました。私は必須ではないフィールドを設定し、私はそれを私のテンプレートにJSで必要に設定しました。私は、これはユーザーとして最適ではないことを知っている
{%if sub_course_grade.grade is None%}
<script>
window.onload = function(){
reason_field = document.getElementById("id_reason");
reason_field.parentElement.style.display = "none";
}
</script>
{%else%}
<script>
window.onload = function(){
reason_field = document.getElementById("id_reason");
reason_field.setAttribute("required", "");
}
</script>
{%endif%}
は、HTMLを編集していない理由を送るが、これは、このアプリケーションのために十分であることができます。
をオーバーライドすることができますし、それを追加しましたか? –
フォームコードを入力できますか? –