我想让我的学生在登录后更新他的个人资料,但我似乎无法正确编码个人资料更新。这是我的代码:
class User(AbstractUser):
pass
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
name = models.CharField(max_length=30, null=True, blank=True, default=None)
surname = models.CharField(max_length=50, null=True, blank=True, default=None)
<form method="POST" action="{% url 'profile_edit' %}" class="" >
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>q
</form>
def profile_edit(request):
user = request.student
form = StudentForm(request.POST or None, initial={'name': user.name,
'surname': user.surname})
if request.method == 'POST':
if form.is_valid():
user.student.name = request.POST['name']
user.student.surname = request.POST['surname']
user.save()
return HttpResponseRedirect('index')
context = {
"form": form
}
return render(request, "registration/profile_edit.html", context)
错误'AnonymousUser' object has no attribute 'name'
表示当前用户未经过身份验证。您可以使您的视图仅对经过身份验证的用户可用login_required装饰器:
@login_required
def profile_edit(request):
pass
另外,用户模型没有 name 属性,您需要访问用户的学生属性才能获取它:
form = StudentForm(request.POST or None, initial={'name': user.student.name,
'surname': user.student.surname})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)