質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

1925閲覧

Django:入力フォームで表示される一意制約のエラーメッセージを変えたい

save6

総合スコア6

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2021/07/06 09:33

Djangoで作った入力フォームで表示されるエラーメッセージの文字列を変えたいのですが、方法をご存知の方ご教示いただけないでしょうか?

具体的には一意制約を設定した項目で、同じ内容を入力すると下記画像のようなエラーメッセージが表示されます。

このメッセージを「同じ名前は既に使われています。別の名前を入力してください。」というメッセージに変えたいです。

もし可能であれば、このFormでの変更でなくアプリケーション全体での変更方法だと助かります。
よろしくお願いいたします。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

メッセージだけ変える処理が分からなかったので、バリデーションエラーを新規に作ることで対応しました。一応下記のclean_nameで、メッセージが変わりました。デフォルトで表示されていたメッセージは消えて、このメッセージに置き換わっています。

要件は満たしているので問題ないのですが、既存のエラーメッセージを書き換えるのに、エラー検知の方法も再度書いてメッセージを変えるというのは、間違えたら事ですし回答として余り良くないような気がしています。

そのためこの質問は1週間よりよい回答を待とうと思います。
メッセージだけ変える良い回答をお持ちの方いらっしゃいましたらお手数ですがご回答お願いいたします。

python

1class VillageForm(forms.ModelForm): 2 3 name = forms.CharField(label='',max_length=100, \ 4 widget=forms.TextInput(attrs={'id':'vname','class':'village_name','onkeyup':'ShowLength(value,inputlength1);'})) 5 6 content = forms.CharField(required=False,label='',max_length=500,\ 7 widget=forms.Textarea(attrs={'id':'vcontent','class':'village_content','onkeyup':'ShowLength(value,inputlength2);'})) 8 9 def clean_name(self): 10 name = self.cleaned_data['name'] 11 if Village.objects.filter(name=name).exists(): 12 raise forms.ValidationError('同じ名前は既に使われています。別の名前を入力してください。') 13 return name 14 15 class Meta: 16 model = Village 17 fields = ['name','content']

投稿2021/07/07 01:09

save6

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問