Django 'User' 对象没有属性 'profile'



有人可以帮助我吗?我一直在SO上四处走动,但无法得到答案。

我越来越要'User' object has no attribute 'profile'

这是我的用户模型

class Profile(models.Model):
NARRATESTATUS = (
('PAS', 'Passed'),
('REV', 'For_Review'),
('ACC', 'Narration_Accepted'),
)
TRANSLATESTATUS = (
('PSD', 'Passed'),
('RVW', 'For_Review'),
('ACP', 'Translation_Accepted'),
)
user = models.ManyToManyField(User, max_length=50, related_name='userprofile')
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
narrate = models.TextField(max_length=9999, default='Enter Narration')
review_narration = models.CharField(max_length=50, choices=NARRATESTATUS, default='Reviewing Narration')
translate = models.TextField(max_length=9999, default='Enter Translation')
review_translation = models.CharField(max_length=50, choices=TRANSLATESTATUS, default='Reviewing Translation')
def __str__(self):
return self.user
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)

我不知道它为什么要扔'User' object has no attribute 'profile'

有人熟悉这个吗?

你的模型没有任何意义。配置文件和用户之间存在多对多关系。顾名思义,这意味着每个用户可以有多个配置文件,并且每个配置文件可以与多个用户相关联。

当然,这不是您想要的:您需要将单个用户与单个配置文件相关联,并且该配置文件仅属于该用户。因此,您应该使用一对一的字段。

user = models.OneToOneField(User, related_name='profile')

请注意另外两个更改:max_length用于字符串,而不是关系; 更重要的是,由于您想通过user.profile访问配置文件,因此您必须将related_name设置为profile

确保您的应用在 settings.py INSTALLED_APPS中可用

尝试将user更改为User

User = models.ManyToManyField(User, max_length=50, related_name='userprofile')

最新更新