如何将图像保存在用户命名的目录中?

时间:2019-07-27 10:41:38

标签: python django django-models django-admin django-2.2

我正在使用Django2.2,目前正在学习Django。我创建了一个模型,在该模型中,我必须发布某件事的图像,并且该模型与用户连接。我想将图像保存在以该特定用户命名的目录中

我有一个自定义的用户模型,在其中创建了一个名为``个人资料照片''的字段,并将该个人资料照片保存到该用户命名的目录中。但是随后我创建了另一个名为``产品''的应用程序,在那里我创建了许多字段,包括图像我正在尝试将该图像保存在该特定用户命名的目录中。

def user_directory_path(instance, filename):
   return 'media/%s/%s' % (instance.username, filename)

 class Products(models.Model):  
   title = models.CharField(max_length=100)
   body = models.CharField(max_length=1000)
   image = models.ImageField(upload_to = user_directory_path)
   product_user = models.ForeignKey(User, on_delete=models.CASCADE)

   def __str__(self):
         return self.title

当我尝试保存产品时发生错误。

'Products' object has no attribute 'username'

有没有成功的方法。

1 个答案:

答案 0 :(得分:1)

一个Products实例确实没有username属性。 product_user拥有,因此您可以将其更改为:

def user_directory_path(instance, filename):
   return 'media/%s/%s' % (instance.product_user.username, filename)
  

注意:模型通常具有单数名称,因此Product而不是 Products