Django 'User'对象在我尝试登录时没有属性'profile'



我有一个OneToOne字段关系,但当我向它添加一个相关的名称属性时,每次尝试登录时,我都会收到以下错误:

'User' object has no attribute 'profile'

配置文件型号:

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_profile')
weight = models.FloatField(max_length=20, blank=True, null=True)
height = models.FloatField(max_length=20, blank=True, null=True)
goal = models.FloatField(max_length=20, blank=True, null=True)
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()

在您的模型中,您已经指定希望能够使用user_profile从用户模型访问该模型。

related name属性允许您通过设置的名称与相关模型进行交互。

在视图中,您可以使用request.user.user_profile 访问它

它将为您提供请求查看的用户的配置文件。

以上是一个例子,但无论以何种方式引用特定用户,您都可以通过在用户后添加.user_profile来访问配置文件

最新更新