Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django寄存器扩展用户_Python_Django_Python 3.x_Django Models_Django Forms - Fatal编程技术网

Python Django寄存器扩展用户

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

我正在尝试在django中创建和管理一个自定义用户。 我看到有两种可能,我选择了扩展(而不是创建新的auth)

模型 models.py 正如我在doc中读到的,我只是用django auth models的用户类创建了一个OneToOne字段,这样我就可以在我自己的用户(这里是艺术家)上访问方法和属性,比如用户名、电子邮件

form.py 在这里,我扩展了UserCreationForm来准备一个稍微不同的表单(我希望在我的注册表单上有电子邮件字段)

但我的问题是:我第一次尝试

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()