ユーザーがサインアップするときにメールを入力するように強制しようとしています。ModelForms で一般的にフォーム フィールドを使用する方法を理解しています。ただし、既存のフィールドを必須にする方法がわかりません。
私は次のモデルフォームを持っています:
class RegistrationForm(UserCreationForm):
"""Provide a view for creating users with only the requisite fields."""
class Meta:
model = User
# Note that password is taken care of for us by auth's UserCreationForm.
fields = ('username', 'email')
次のビューを使用してデータを処理しています。それがどれほど関連性があるかはわかりませんが、他のフィールド (ユーザー名、パスワード) がエラーで適切に読み込まれていることは言うまでもありません。ただし、 User モデルには、これらのフィールドが必要に応じて設定されています。
def register(request):
"""Use a RegistrationForm to render a form that can be used to register a
new user. If there is POST data, the user has tried to submit data.
Therefore, validate and either redirect (success) or reload with errors
(failure). Otherwise, load a blank creation form.
"""
if request.method == "POST":
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
# @NOTE This can go in once I'm using the messages framework.
# messages.info(request, "Thank you for registering! You are now logged in.")
new_user = authenticate(username=request.POST['username'],
password=request.POST['password1'])
login(request, new_user)
return HttpResponseRedirect(reverse('home'))
else:
form = RegistrationForm()
# By now, the form is either invalid, or a blank for is rendered. If
# invalid, the form will sent errors to render and the old POST data.
return render_to_response('registration/join.html', { 'form':form },
context_instance=RequestContext(request))
RegistrationForm にメール フィールドを作成しようとしましたが、効果がないようです。User モデルを拡張する必要があり、メール フィールドをオーバーライドする必要がありますか? 他のオプションはありますか?
ありがとう、
パラゴンRG