错误:没有创建UserDetails模型

时间:2018-01-24 20:53:47

标签: python django

我尝试在上传之前缩小图像尺寸。我使用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)

问题是,当我注册字段usernamefirst_name& password,它没有与该用户一起创建UserDetails模型。因此,如果我尝试访问任何用户的个人资料,则会出现错误no UserDetails model is present

如果我从模型中移除图像压缩代码&再次注册一切都开始正常工作。

我们如何解决这个问题?谢谢 。 。 。

1 个答案:

答案 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)