有一个 UserPorofile 模型,每个用户都有它,而且总是不需要创建它。在注册失败后登录用户并添加 userprofile 字段。没有找到匹配错误。如何在 user.save() 行之后登录或向配置文件添加字段
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='imageusers', verbose_name='Изображение')
phone = models.TextField()
teacher = models.BooleanField(default=False)
def __unicode__(self):
return self.user
管理员.py:
class UserInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'Данные пользователя'
class UserAdmin(UserAdmin):
inlines = (UserInline, )
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
注册视图
@csrf_exempt
def registeruser(request):
if request.method == 'POST':
login = request.POST.get('username')
mail = request.POST.get('mail')
firstname = request.POST.get('firstname')
lastname = request.POST.get('lastname')
phone = request.POST.get('phone')
avatar = request.POST.get('avatar')
password = request.POST.get('password')
passwordtwo = request.POST.get('passwordtwo')
if password != passwordtwo:
messages.error(request, 'Ծածկաբառերը չեն համընկնում')
elif User.objects.filter(username=login).exists():
messages.error(request, 'Նման լոգինով մարդ գոյուտյուն ունի')
elif login == '' or mail == '' or firstname == '' or lastname == '' or phone == '' or password == '' or passwordtwo == '':
messages.error(request, 'Լրացրեք ամբողջ տվյալները')
else:
user = User.objects.create_user(username=login, password=password)
user.first_name = firstname
user.last_name = lastname
user.email = mail
user.save()
gdg = User.objects.get(username=user.use
rname)
gd = UserProfile.objects.get(user=gdg)
gdg.userprofile.phone = phone
gdg.userprofile.avatar = avatar
gdg.userprofile.save()
return render(request, 'accounts/regform.html')
之后添加了配置文件创建和自动授权。
对于进口: