我按照此 SO 帖子中的描述扩展了我的用户模型:使用 Django 中的自定义字段扩展用户模型 https://stackoverflow.com/questions/44109/extending-the-user-model-with-custom-fields-in-django
但是,我正在尝试创建一个用户创建表单,但我得到以下信息:
“成员”对象没有属性“set_password”
这是我的模型表格:
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)
....还有我的形式....
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 的新手,所以提前致谢
您选择的扩展方法User
模型是通过创建一个UserProfile
(你称之为Member
). A Member
is not的一个子类User
,所以你不能打电话User
方法(如set_password
) on it.
相反,您的 SignUpForm 的元模型仍然应该是 User,并且要获取扩展的 UserProfile,您应该调用 user.get_profile()。例如,要获取用户的性别,您可以调用user.get_profile().gender
.
Read https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users有关扩展用户配置文件的更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)