以下のようにモデルとフォームを作成しました。
models.py
Python
1class TestModel(models.Model): 2 """ モデル """ 3 email = models.EmailField( 4 'メールアドレス' 5 )
forms.py
Python
1class TestModelForm(forms.ModelForm): 2 """ モデルフォーム """ 3 class Meta: 4 model = TestModel 5 fields = ('email',)
そして、views.pyは以下のようにし登録する仕組みを作成しました。
Python
1def form(request): 2 """ フォーム """ 3 if request.method == 'POST': 4 form = TestModelForm(request.POST) 5 if form.is_valid(): 6 form.save() 7 8 # トップ画面へリダイレクトさせます 9 return HttpResponseRedirect(reverse('top')) 10 else: 11 form = TestModelForm() 12 13 return render(request, 'form.html', { 14 'form': form, 15 } 16 )
一般的な登録の流れ(自分だけが思っていることかもしれませんが)であり、これで実際に登録はされるのですが、今回質問させていただきたいのは「EmailField」の挙動についてです。
実は今回の登録では「test@gmail.com」というようなドメインが大文字でも登録できてしまいます。
バリデーションを設定する等して解決させることはできると思いますが、「/admin」で入れるDjangoのAdminサイトでは同じようなメールアドレスを登録すると「test@gmail.com」というように小文字で登録されます。
Adminサイトと同じように小文字に変換して登録させるにはどのようにしたらよいのでしょうか?
また、Adminサイトではなぜこのような処理ができるのかわかる方がいたら、そのあたりも教えていただけないでしょうか。
ちなみに、環境は以下の通りです。
- Python 3.4.3
- Django 1.8.4
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。