Python Django寄存器扩展用户
我正在尝试在django中创建和管理一个自定义用户。 我看到有两种可能,我选择了扩展(而不是创建新的auth) 模型 models.py 正如我在doc中读到的,我只是用django auth models的用户类创建了一个OneToOne字段,这样我就可以在我自己的用户(这里是艺术家)上访问方法和属性,比如用户名、电子邮件 form.py 在这里,我扩展了UserCreationForm来准备一个稍微不同的表单(我希望在我的注册表单上有电子邮件字段) 但我的问题是:我第一次尝试Python Django寄存器扩展用户,python,django,python-3.x,django-models,django-forms,Python,Django,Python 3.x,Django Models,Django Forms,我正在尝试在django中创建和管理一个自定义用户。 我看到有两种可能,我选择了扩展(而不是创建新的auth) 模型 models.py 正如我在doc中读到的,我只是用django auth models的用户类创建了一个OneToOne字段,这样我就可以在我自己的用户(这里是艺术家)上访问方法和属性,比如用户名、电子邮件 form.py 在这里,我扩展了UserCreationForm来准备一个稍微不同的表单(我希望在我的注册表单上有电子邮件字段) 但我的问题是:我第一次尝试 class M
class Meta:
model = Artists
fields = ('user.username', 'user.email')
但是我在model Artister中发现了未知的错误字段。
所以我试着只使用用户名和电子邮件和相同的错误
因此,我将model=Artists
更改为User,效果很好
但是现在我如何在保存用户时注册我的艺术家对象
我是否必须制作类似(在save()中)的内容:
或者重写create_user()?
我在这里完全迷路了,我正在查找文档和问题,但找不到什么,因为大多数示例人员都定义自己的auth
提前谢谢
贝斯塔
编辑:我正在使用django 1.8.2和python 3.4是的,如果您不想让事情复杂化,这可能是一个简单的方法。如果我想直接将模型设置为Artister而不是user,我如何访问表单中的users字段?我想如果我这样做了,我就不必做那个把戏了,因为一个艺术家(和用户)将被拯救@Ajaygupta为什么不把
User
子类化?你说@mattm是什么意思@马特姆
class CreateArtistForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'email')
def save(self, commit=True):
user = super(CreateArtistForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
class Meta:
model = Artists
fields = ('user.username', 'user.email')
artist = Artists()
artist.user = user
artist.save()