【发布时间】:2021-01-29 12:40:08
【问题描述】:
您好,当我尝试添加表单以更新用户个人资料的描述时出现以下错误
我的模型:
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
birth_date = models.DateField(null=True, blank=True)
profile_img = models.ForeignKey(Image,on_delete=models.CASCADE,related_name='images',null=True)
description = models.TextField()
我的表格:
class ChangeUserDescription(ModelForm):
class Meta:
model = Profile
fields = ['description','profile_img']
widgets = {
'description': forms.Textarea(),
'profile_img':forms.ImageField()
}
labels = {
'description':'Description',
'profile_img':'Image'
}
我的看法:
@login_required
def profile(request):
if request.method == 'POST':
form = ChangeUserDescription(request.user, request.POST)
if form.is_valid():
form.save()
else:
messages.error(request, 'Please correct the error below.')
else:
form = ChangeUserDescription(request.user)
return render(request, 'registration/profile.html', {'form': form})
还有我的模板:
<div class="mainPage">
<h1>Profile</h1>
<h2>Bonjour {{user.get_username}}</h2>
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Save changes</button>
</form>
<a href="{% url 'adoptYourOcApp:password_change'%}" >Change password</a>
{% include "annonces/my_list.html" %}
</div>
当我进入相应页面时直接出现以下错误:
AttributeError at /accounts/profile/
'User' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/accounts/profile/
Django Version: 2.2.17
Exception Type: AttributeError
Exception Value:
'User' object has no attribute 'get'
【问题讨论】:
-
在 django 中,默认的查询集操作是从对象管理器开始的,所以内部的表单应该调用
User.objects.get()而不是User.get()。请看一下您的代码库,也许某处有重新定义的表单类。您是否使用任何其他软件包?
标签: python django django-models django-forms