【发布时间】:2021-06-27 14:23:31
【问题描述】:
在这里,我使用配置文件模型扩展了 django 的用户模型,我想将此字段添加到用户模型中。 以下是文件。
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user_ref = models.OneToOneField(User, on_delete=models.CASCADE)
pr1_points = models.IntegerField(default=0)
pr2_points = models.IntegerField(default=0)
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
user = instance
if created:
profile = Profile(user=user)
profile.save()
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
views.py中的注册函数如下:
'''
def postregister(request):
if request.POST:
first_name = request.POST.get('first_name')
last_name = request.POST.get('last_name')
email = request.POST.get('email')
username = request.POST.get('username')
password1 = request.POST.get('password1')
password2 = request.POST.get('password2')
if password1 == password2:
if User.objects.filter(username=username).exists():
messages.error(request, 'Username is Taken Please Try Again')
return render(request,'signup.html')
elif User.objects.filter(email=email).exists():
messages.error(request, 'Email is Taken Please Try Again')
return render(request,'signup.html')
else:
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name, email=email, password=password1)
user.save()
print('You are registered successfully, Please sign to continue.')
return redirect('login')
else:
messages.error(request, 'Password is not matching Please Try Again')
return render(request,'signup.html')
else:
return redirect('register')
'''
所以在创建新用户时它会给出错误:Profile() got an unexpected keyword argument 'user'. 所以请任何知道答案的人帮助我。
这是错误的截图供参考 [1]:https://i.stack.imgur.com/5qE4q.png
【问题讨论】:
-
您在个人资料中有
user_ref对...??请确认应该是profile = Profile(user_ref=user)或profile = Profile(user=user)... -
成功了@ShivendraPratapKushwaha 非常感谢!!
标签: django django-models django-views django-users