Django - 使用自定义用户模型创建用户时出现内部错误
好的,我知道这个问题可能有点傻,但我现在卡住了,实在想不出该怎么办。
我在谷歌和StackOverflow上搜索过,但没有找到任何答案:我尝试了这些:
- 在Django中为用户添加自定义字段
- Django - 在用户创建时创建用户资料
- https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users
我的模型是这样的:
class UserProfile(models.Model):
user = models.OneToOneField(User)
quota = models.IntegerField(null = True)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
而我用于用户注册的视图是这样的:
def register(request):
if request.method == 'POST': # If the form has been submitted...
form = RegistrationForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
cd = form.cleaned_data
#Then we create the user
user = User.objects.create_user(cd['username'],cd["email"],cd["password1"])
user.get_profil().quota = 20
user.save()
return HttpResponseRedirect('')
else:
form = RegistrationForm() # An unbound form
return render(request, 'registration_form.html', {'form': form,})
导致内部错误的那一行是:
user = User.objects.create_user(cd['username'],cd["email"],cd["password1"])
错误信息是:
InternalError at /register/
current transaction is aborted, commands ignored until end of transaction block
谢谢你的帮助
1 个回答
3
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序做一些事情,比如计算、显示信息或者处理数据。为了让程序能够理解我们想要它做的事情,我们需要给它一些指令,这些指令就是代码。
代码就像是我们和计算机之间的语言,计算机通过这些代码来执行各种任务。每一行代码都有它特定的功能,就像我们日常生活中的指令一样,比如“打开灯”或者“播放音乐”。
在编程的过程中,我们可能会遇到一些问题,比如代码写错了或者程序没有按照预期工作。这时候,我们就需要去查找问题的原因,看看哪里出了错,然后进行修正。
总之,编程就像是在给计算机下命令,让它按照我们的想法去工作。希望这些解释能帮助你更好地理解编程的基本概念!
user = User.objects.create_user(username=form.cleaned_data['username'],
password=form.cleaned_data['password'],
email=form.cleaned_data['email'])
user.is_active = True
user.save()