如何为Django中的用户创建特殊字段

时间:2016-11-08 15:35:04

标签: python django model

我是Django的新手,我想创建一个应用程序,艺术家可以发布他们的歌曲和专辑。现在我希望艺人有一个与普通用户不同的注册页面。我希望艺人能够添加他们的肖像,流派等等。有没有办法将这些字段添加到用户模型?我已经看到了一些关于此的问题,但我不认为我真的理解答案。

1 个答案:

答案 0 :(得分:3)

基本上有两种方法可以实现这一目标:

<强> 1。使用OneToOneField为django用户模型创建一个新模型Artist。这很可能是你想要的。例如。像这样:

from django.contrib.auth.models import User


class Artist(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    genres = models.ManyToManyField('myapp.Genre', related_name='artists')


class Portrait(models.Model):
    artist = models.ForeignKey('myapp.Artist', related_name='portraits')


class Genre(models.Model):
    name = models.CharField(max_length=30)

<强> 2。指定继承自AbstractBaseUser的自定义用户模型。如果您想存储与身份验证本身相关的其他信息,则仅建议这样做。

我建议您仔细阅读相关文档: https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-the-existing-user-model

要创建自定义注册页面,您需要使用自定义模板创建自己的FormView,例如使用UserCreationForm和/或ModelForm内置的django。您可以使用您需要的任何字段来扩展它。根据您的需要,有几种方法可以实现这一目标。