在Django中扩展自定义用户的用户表单 [英] In Django Extending User Form for Custom User
问题描述
我扩展了我的用户模型,如本SO发布中所述:
在Django中使用自定义字段扩展用户模型
I extended my User Model as described in this SO Posting: Extending the User model with custom fields in Django
但是,我正在尝试创建一个用户创建表单,但是我得到以下内容:
However, I'm trying to create a User Create form but I get the following:
'成员对象没有属性'set_password'
'Members' object has no attribute 'set_password'
这是我的模型窗体:
Here is my model form:
class Members(models.Model):
user = models.OneToOneField(User)
GENDER_CHOICES = ( ... )
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
date_of_birth = models.DateField()
class Meta:
db_table='members'
def create_user_profile(sender, instance, created, **kwargs):
if created:
Members.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
....和我的表单.. ..
....and my form....
class SignUpForm(UserCreationForm):
GENDER_CHOICES = ( ... )
email = forms.EmailField(label='Email address', max_length=75)
first_name = forms.CharField(label='First Name')
last_name = forms.CharField(label='Last Name')
gender = forms.ChoiceField(widget=RadioSelect, choices=GENDER_CHOICES)
date_of_birth = forms.DateField(initial=datetime.date.today)
class Meta:
model = Members
fields = ('username', 'email','first_name', 'last_name')
我是Django的新人,所以请提前感谢
I'm new at Django,so thanks in advance
推荐答案
您选择扩展您的用户的方法
模型是通过创建一个 UserProfile
(您已经调用成员
)。 成员
是不 c 用户
方法(如 set_password
)。
The method you chose to extend your User
model is by creating a UserProfile
(which you've called Member
). A Member
is not a subclass of User
, so you can't call User
methods (like set_password
) on it.
您的SignUpForm的Meta模型应该仍然是User,要获取扩展的UserProfile,您应该调用user.get_profile()。例如,要获取用户的性别,您可以调用 user.get_profile()。gender
。
Instead, your SignUpForm's Meta model should still be User, and to get the extended UserProfile, you should call user.get_profile(). For instance, to get a user's gender, you would call user.get_profile().gender
.
阅读< a href =https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users =nofollow> https://docs.djangoproject.com/en / dev / topics / auth /#存储附加信息关于用户,以获取有关扩展用户配置文件的更多信息。
Read https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users for more information about extending the user profile.
这篇关于在Django中扩展自定义用户的用户表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!