Django注册扩展用户

时间:2015-07-09 14:09:56

标签: python django python-3.x django-models django-forms

我尝试在django中创建和管理自定义用户。 我看到有两种可能性,我已选择扩展(不创建新的身份验证)。

模型

models.py

class Artists(models.Model):
    user = models.OneToOneField(User)
    artist_image = models.ImageField(null=True, blank=True, upload_to="/artist_image/")

    def __str__(self):
        return 'Profil de {0}'.format(self.username)

    def get_absolute_url(self):
        return reverse('artist-details', kwargs={'pk': self.pk})

正如我在doc中所读到的,我只是使用django auth模型的User类创建一个OneToOne字段,因此我可以在我自己的用户(这里是艺术家)上访问方法和属性,例如用户名,电子邮件。

form.py

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

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

但这是我的问题:我首先尝试了

class Meta:
    model = Artists
    fields = ('user.username', 'user.email')

但我在模型艺术家中未知的错误字段。 所以我尝试使用用户名和电子邮件以及同样的错误。

所以我将model = Artists更改为User,它运行正常。

但是现在如何在用户保存时注册我的艺术家对象?

我是否必须制作(在save()中):

artist = Artists()
artist.user = user
artist.save()

或覆盖create_user()? 我在这里迷失了方向,而且我在寻找无法找到某些东西的文档和问题,因为大多数示例人都定义了自己的身份验证。

提前致谢

无敌

编辑:我正在使用django 1.8.2和python 3.4

0 个答案:

没有答案