[Django3.0]Viewでのエラーメッセージの書き方

エラーメッセージがあった場合にはforループで回すのが一般的?

モデルで正規表現でカタカナのみ入力可としてる所で、漢字で入力してエラーメッセージを表示させる。

/sales/models.py


class Clients(models.Model):
	name = models.CharField(max_length=255)
	name_kana = models.CharField(max_length=255, null=True, blank=True, validators=[RegexValidator(r"\u30A1-\u30F4")])
	office = models.CharField(max_length=255, null=True, blank=True)
	department = models.CharField(max_length=255, null=True, blank=True)
	position = models.CharField(max_length=255, null=True, blank=True)
	charge = models.CharField(max_length=255)
	charge_mail = models.EmailField(max_length=255)
	zipcode = models.CharField(max_length=8, validators=[RegexValidator(r"\d{3}-\d{4}")])
	prefecture = models.CharField(max_length=20)
	address = models.CharField(max_length=255)
	tel = models.CharField(max_length=15)
	fax = models.CharField(max_length=15, null=True, blank=True)
	name_top = models.CharField(max_length=255)
	position_top = models.CharField(max_length=100, null=True, blank=True)
	remark = models.TextField(max_length=300, null=True, blank=True)
	created_at = models.DateTimeField(auto_now_add=True)
	updated_at = models.DateTimeField(auto_now=True)

/templates/sales/client_input.html

{% for error in form.errors %}
<div class="text-danger">
    {{ error }}
</div>
{% endfor %}

エラーメッセージを定義していないから、kana_nameだけ表示される。

class ClientsForm(forms.ModelForm):
	class Meta:
		model = Clients
		fields = ['name', 'name_kana', 'office', 'department', 'position', 'charge', 'charge_mail', 'zipcode', 'prefecture', 'address', 'tel', 'fax', 'name_top', 'position_top', 'remark']

	def clean_name_kana(self);
		name_kana = self.cleaned_data['name_kana']
		p = u'^[\u30A1-\u30F4]+$'
		if(re.match(p, name_kana))
			raise forms.ValidationError("全角カナで入力してください")
		return name_kana

上手くいかない。正規表現を変更する。

	def clean_name_kana(self):
		name_kana = self.cleaned_data['name_kana']
		p = re.compile('[\u30A1-\u30F4]+')
		if not(p.fullmatch(name_kana)):
			raise forms.ValidationError("全角カナで入力してください")
{% for error in form.errors %}
				<div class="text-danger">
				{{ form.name_kana.errors }}
			   </div>
				{% endfor %}

上手く行ったが、なんかモヤモヤするな。