Python 沿着用户条目django创建扩展条目
嗨,谢谢你的帮助 我有下面的代码,当“user\u profile”部分被注释掉时,它将创建一个新用户。我只是想给用户添加扩展字段。我想我很接近,但我有点迷路了。正确的做法是什么 现在,当我不加注释地运行它时,我得到了这个错误Python 沿着用户条目django创建扩展条目,python,django,forms,Python,Django,Forms,嗨,谢谢你的帮助 我有下面的代码,当“user\u profile”部分被注释掉时,它将创建一个新用户。我只是想给用户添加扩展字段。我想我很接近,但我有点迷路了。正确的做法是什么 现在,当我不加注释地运行它时,我得到了这个错误 UNIQUE constraint failed: slug_trade_app_userprofile.user_id 需要明确的是,在单击“提交”之前,数据库中不存在该用户 views.py def signup(request): if request.meth
UNIQUE constraint failed: slug_trade_app_userprofile.user_id
需要明确的是,在单击“提交”之前,数据库中不存在该用户
views.py
def signup(request):
if request.method == 'POST':
user_form = UserForm(request.POST)
profile_form = UserProfileForm(request.POST)
if user_form.is_valid():
if user_form.is_valid():
print("1")
#user
created_user = user_form.save(commit=False)
created_user.username = created_user.email
created_user.set_password(created_user.password)
created_user.save()
print("2")
#extended profile
created_profile = profile_form.save(commit=False)
created_profile.user = created_user
created_profile.save()
print("3")
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_picture = models.ImageField(upload_to='static/profile_pictures', blank=True )
bio = models.TextField(max_length=500, blank=True)
on_off_campus = models.CharField(max_length=3,
default="on",
choices=CAMPUS_STATUS)
下面是我尝试的另一种方法。我想用更正确的方法来做,但两种方法都可以。我在两方面都犯了同样的错误
def signup(request):
if request.method == 'POST':
user_form = UserForm(request.POST)
profile_form = UserProfileForm(request.POST)
if user_form.is_valid():
# create user
username = request.POST['email']
first_name = request.POST['first_name']
last_name = request.POST['last_name']
email = request.POST['email']
password = request.POST['password1']
user = User.objects.create_user(username=username,
first_name=first_name,
last_name=last_name,
email=email,
password=password)
#extended
bio = request.POST['bio']
on_off_campus = request.POST['on_off_campus']
user_profile = UserProfile.objects.create( user=user,
bio=bio,
on_off_campus=on_off_campus)
既然您更改了整个代码段,您还可以修复缩进吗。。。。。。。。。。