Vic*_*yes 1 django django-views
有人能帮我吗?我一直在这里询问有关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)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它会抛出'User' object has no attribute 'profile'
有熟悉这个的吗?
你的模型没有任何意义。个人资料和用户之间存在多对多关系。顾名思义,这意味着每个用户可以拥有多个配置文件,并且每个配置文件可以与多个用户关联。
当然,这不是您想要的:您需要将单个用户与单个配置文件关联,并且该配置文件仅属于该用户。所以你应该使用一对一字段。
user = models.OneToOneField(User, related_name='profile')
Run Code Online (Sandbox Code Playgroud)
请注意另外两个更改: max_length 适用于字符串,而不适用于关系;更重要的是,因为您想通过访问配置文件,所以user.profile必须将 related_name 设置为profile。
| 归档时间: |
|
| 查看次数: |
7912 次 |
| 最近记录: |