【发布时间】:2019-08-11 13:19:48
【问题描述】:
尝试连接 Django 表单和扩展用户模型,但难以保存表单。基本上,我可以对用户进行身份验证,但不能将信息保存到用户的 CustomUser 模型或“配置文件”模型中。
我觉得我根本不了解如何扩展用户模型,所以如果您对此有一些建议,那将非常有帮助。
#views.py
def registration(request):
if request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
custom = form.save(commit=False)
user = request.user
custom = user.profile()
custom.key = "".join(random.choice(string.digits) for i in range(20))
custom.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password2']
user = authenticate(request, username=username, password=password)
messages.success(request, f'Your account has been created! Please proceed to agreements and payment.')
return redirect('other_page')
else:
form = CustomUserCreationForm(request.POST)
return render(request, 'registration.html', {'form': form})
这是我的models.py
class CustomUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
key = models.CharField(max_length=25, null=True, blank=True)
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
username = models.CharField(max_length=25)
password1 = models.CharField(max_length=25)
password2 = models.CharField(max_length=25)
@receiver(post_save, sender=User)
def create_custom_user(sender, omstamce, created, **kwargs):
if created:
CustomUser.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
if instance.CustomUser.save()
def __str__(self):
return f'{self.first_name} ({self.last_name})'
在 settings.py 我添加了“AUTH_PROFILE_MODULE = 'app.CustomUser'”。但是,我收到此错误:
AttributeError: 'User' object has no attribute 'profile'
【问题讨论】:
-
你用的是什么 Django 版本?
-
使用版本 Django 2.2.3
标签: django django-models django-forms