django-registrationの話

こんばんはー。

先日django-registrationの話書きましたが、

これって初期設定ではメールアドレスの重複登録が可能なんですよね・・。

どうにかできないかなー。って思ってたんですけど、ちゃんと用意されていました。

django-registration0.8の話です。
0.7以前の場合、backendが必要ありません。

urls.pyでちょちょいと追加すればできます。

from registration.forms import RegistrationFormUniqueEmail

このコードを追加して、urlpatternsに

urlpatterns = patterns('',
  url(r'^admin/', include(admin.site.urls)),
  url(r'^accounts/register/$','registration.views.register',
    {
      'backend': 'registration.backends.default.DefaultBackend',
      'form_class':RegistrationFormUniqueEmail,
    },name='registration_register'),
  url(r'^accounts/',include('registration.urls')),
)

この下の2つを追加します。

そうしたら、登録時にメールアドレスが重複していないかを、django-registrationでチェックしてくれるようになります。

ただ、Userテーブルのemailカラムにunique制約がついてるわけではないので、後から変更する時に重複するメールアドレスを登録することができてしまいます。
例えば、管理者ページでメールアドレスを変更した時にも重複したアドレスを登録できちゃいます。

どうにかunique制約つけたいんですけど、方法がよくわからないんですよねー・・。
誰か知ってる方教えてください(´・ω・`)