我是Django的新手,我想创建一个应用程序,艺术家可以发布他们的歌曲和专辑。现在我希望艺人有一个与普通用户不同的注册页面。我希望艺人能够添加他们的肖像,流派等等。有没有办法将这些字段添加到用户模型?我已经看到了一些关于此的问题,但我不认为我真的理解答案。
答案 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。您可以使用您需要的任何字段来扩展它。根据您的需要,有几种方法可以实现这一目标。