我尝试在上传之前缩小图像尺寸。我使用django& amp;给出的默认User
模型将它链接到另一个模型只是为了向用户配置文件添加更多内容。
这就是models.py的样子,
class UserDetails(models.Model):
user = models.OneToOneField(User)
profile = models.ImageField(upload_to='profile_image', blank=True)
...
def save(self, *args, **kwargs):
img = Image.open(self.profile)
resize = img.resize((240, 240), Image.ANTIALIAS)
new_image = BytesIO()
resize.save(new_image, format=img.format)
temp_name = self.profile.name
self.profile.save(temp_name, content=ContentFile(new_image.getvalue()), save=False)
super(UserDetails, self).save(*args, **kwargs)
问题是,当我注册字段username
,first_name
& password
,它没有与该用户一起创建UserDetails
模型。因此,如果我尝试访问任何用户的个人资料,则会出现错误no UserDetails model is present
。
如果我从模型中移除图像压缩代码&再次注册一切都开始正常工作。
我们如何解决这个问题?谢谢 。 。 。
答案 0 :(得分:0)
覆盖save()
后,Super必须是第一行def save(self, *args, **kwargs):
super(UserDetails, self).save(*args, **kwargs)
if self.profile:
img = Image.open(self.profile)
resize = img.resize((240, 240), Image.ANTIALIAS)
new_image = BytesIO()
resize.save(new_image, format=img.format)
temp_name = self.profile.name
self.profile.save(temp_name, content=ContentFile(new_image.getvalue()), save=False)