注册视图中的表单处理为具有多个值的 'CreateView'
form handling in Signup view as 'CreateView' with multiple values
我有 'Profile' 个型号:
class Profile(models.Model):
user = models.OneToOneField(User, related_name='user')
nickname = models.CharField(max_length=100, name='nickname')
avatar = models.FileField()
def __str__(self):
return self.nickname
def date_joined(self):
return self.user.date_joined
我有一个注册表单:
class SignUpForm(UserCreationForm):
nickname = forms.CharField(label='nickname', max_length=100, help_text='Enter your nickname', required=True)
avatar = forms.ImageField(label='Avatar', help_text='Upload your picture')
我想注册视图,通过给定的表单获取用户的个人资料,所以我创建了一个创建视图,如:
class SignUpView(CreateView):
form_class = SignUpForm
template_name = '[path_to_template]/signup.html'
success_url = reverse_lazy('base')
但它不会为数据库中配置文件 table 中的同一用户创建配置文件,它只是创建用户。就好像没有 'Nickname' 或 'Avatar' 永远不会存在于表单中一样。我怎样才能获得关于 'User' 的额外信息并为 'User' 创建一个 'Profile'?
我找到了解决它的方法。我刚刚覆盖了 CreateView 中的 formValid 方法。正如 Bono 提到的那样
The moment you want to make a Profile, do you already have a User?
我刚刚保存了用户,然后为该用户创建了一个新的配置文件。
我有 'Profile' 个型号:
class Profile(models.Model):
user = models.OneToOneField(User, related_name='user')
nickname = models.CharField(max_length=100, name='nickname')
avatar = models.FileField()
def __str__(self):
return self.nickname
def date_joined(self):
return self.user.date_joined
我有一个注册表单:
class SignUpForm(UserCreationForm):
nickname = forms.CharField(label='nickname', max_length=100, help_text='Enter your nickname', required=True)
avatar = forms.ImageField(label='Avatar', help_text='Upload your picture')
我想注册视图,通过给定的表单获取用户的个人资料,所以我创建了一个创建视图,如:
class SignUpView(CreateView):
form_class = SignUpForm
template_name = '[path_to_template]/signup.html'
success_url = reverse_lazy('base')
但它不会为数据库中配置文件 table 中的同一用户创建配置文件,它只是创建用户。就好像没有 'Nickname' 或 'Avatar' 永远不会存在于表单中一样。我怎样才能获得关于 'User' 的额外信息并为 'User' 创建一个 'Profile'?
我找到了解决它的方法。我刚刚覆盖了 CreateView 中的 formValid 方法。正如 Bono 提到的那样
The moment you want to make a Profile, do you already have a User?
我刚刚保存了用户,然后为该用户创建了一个新的配置文件。