django - Django auth 用户注册“用户”对象没有属性“配置文件”
问题描述
每次我注册新帐户时,我总是收到此错误“用户”对象没有属性“配置文件”,即使我复制了代码。我错过了什么?提前感谢谁会在这个问题上帮助我。
这是我的models.py
class Profile(models.Model):
Pending_Request = [
('Active', 'Active'),
('Inactive', 'Inactive'),
]
user = models.OneToOneField(User, related_name="profile", on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
Status = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)
def __str__(self):
suser = '{0.user}'
return suser.format(self)
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.Profile.save()
我的意见.py
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.bio = form.cleaned_data.get('bio')
user.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return redirect('Homepage')
else:
form = SignUpForm()
return render(request, 'customAdmin/signup.html', {'form': form})
这是我的完整追溯
追溯:
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\User\Desktop\LastProject\OnlinePalengke\customAdmin\views.py" in signup
21. user = form.save()
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\forms.py" in save
121. user.save()
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\base_user.py" in save
66. super().save(*args, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save
741. force_update=force_update, update_fields=update_fields)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base
790. update_fields=update_fields, raw=raw, using=using,
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\dispatch\dispatcher.py" in send
175. for receiver in self._live_receivers(sender)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\dispatch\dispatcher.py" in <listcomp>
175. for receiver in self._live_receivers(sender)
File "C:\Users\User\Desktop\LastProject\OnlinePalengke\customAdmin\models.py" in update_user_profile
21. instance.Profile.save()
Exception Type: AttributeError at /SignUpView/
Exception Value: 'User' object has no attribute 'Profile'
解决方案
可能在您尝试访问的问题中未显示的某些代码中user.Profile
,它应该是小写(user.profile
),与您在 中设置的完全一样related_name
。
此外,如果您更改相关模型中的某些内容,要保存更改,您应该调用相关模型上的.save()
方法。像这样:
user.profile.bio = form.cleaned_data.get('bio')
user.profile.save()
推荐阅读
- r - 检查变量和日期并将结果变异为按 id 分组的 1 或 0
- three.js - 从blender导出的gltf具有金属纹理且没有粗糙纹理被加载到粗糙纹理匹配金属纹理的three.js中
- pytorch - pytorch 数据集地图样式与可迭代样式
- python - 字典列表上的 Python 查询
- jquery - 使用 JQuery DataTables 选择后下拉菜单表调用需要额外单击
- arrays - 如何检查没有条目的数组和有条目的伴随数组?
- mysql - MySQL WHERE 参数顺序是否重要?
- c# - Mediatr 默认处理程序和特定处理程序
- reactjs - 第一个笑话测试失败 - 尝试导入反应
- bash - 使用 jq 将 json 作为数组读取