Djangoのフォームでrequired=Trueなフィールドに必須マークをつける
Formの表示をするときに、入力が必須な項目に、「*」をつけたり「必須」って表示したりすることはよくあります。
djangoの場合、必須かどうかの定義はformクラス(ModelFormの場合はmodelクラスの場合も)に記述してあるので、テンプレート側で「この項目は必須だから必須って書いておこう」なんてことをやると、Form側の修正をした場合は、テンプレートの修正も必要になってしまいます。
<table> <tr> <th>{{ form.name.label }} </th> <td>{{ form.name }} </td> <td>必須</td> </tr> <tr> <th>{{ form.prefecture.label }} </th> <td>{{ form.prefecture }} </td> <td>必須</td> </tr> <tr> <th>{{ form.address.label }} </th> <td>{{ form.address }} </td> <td></td> </tr> </table>
解決策の一つとして、fieldのrequired属性を、テンプレートから参照するという手があります
その場合、上記のコードはこう書けます。
<table> {% for field in form %} <tr> <th>{{ field.label }}:</th> <td>{{ field }}</td> <td>{% if field.field.required %}必須{% endif %}</td> </tr> {% endfor %} </table>
参考 : Tell if a Django Field is required from template - Stack Overflow