「email」などの追加フィールドを使用して UserCreationForm を拡張する方法に関するこの投稿を見つけました。ただし、電子メール フィールドは、事前に作成されたユーザー モデルで既に定義されています。
Django のビルド済み User クラスをさらに拡張する追加のモデル (UserProfile と呼ばれる) を作成しました。UserProfile で定義したこれらのフィールドを UserCreationForm に表示するにはどうすればよいですか?
「email」などの追加フィールドを使用して UserCreationForm を拡張する方法に関するこの投稿を見つけました。ただし、電子メール フィールドは、事前に作成されたユーザー モデルで既に定義されています。
Django のビルド済み User クラスをさらに拡張する追加のモデル (UserProfile と呼ばれる) を作成しました。UserProfile で定義したこれらのフィールドを UserCreationForm に表示するにはどうすればよいですか?
モデルに応じてフィールドを追加しUserProfile
(残念ながら、自分自身を繰り返すことを避けるために a を使用するのは簡単ではありませんModelForm
)、オーバーライドされた関数で新しいUserProfile
インスタンスを作成して保存しsave()
ます。リンク先の投稿からの適応:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
job_title = forms.CharField(max_length=100, required=True)
age = forms.IntegerField(required=True)
class Meta:
model = User
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserProfile(user=user, job_title=self.cleaned_data['job_title'],
age=self.cleaned_data['age'])
user_profile.save()
return user, user_profile