为了账号安全,请及时绑定邮箱和手机立即绑定

创建一个函数来为上传的图像位置指定目录

创建一个函数来为上传的图像位置指定目录

Helenr 2023-04-11 15:45:15
我为我的项目模型创建了一个函数,其中有根据用户名和项目标题上传的图像。现在我正在尝试向该项目添加更多图像并且图像有一个外键,但现在我不是随机创建将新图像上传到另一个文件夹,而是想将这些图像上传到之前根据确定的相同文件夹到同一个项目。我试图改变以前的函数,但它返回了一个错误,upload_design_to() takes 1 positional argument but 2 were given我认为是因为我没有添加self到函数中,但我不知道用什么替换它。下面的函数将更具描述性:这是根据用户名和项目标题将图像上传到某个位置的模型和功能:class Item(models.Model):    def upload_design_to(self, filename):        return f'{self.designer}/{self.title}/{filename}'    designer = models.ForeignKey(        User, on_delete=models.CASCADE)    title = models.CharField(max_length=100)    image = models.ImageField(blank=False, upload_to=upload_design_to)现在我创建了一个新的图像模型来向该项目添加更多图像并希望将它们上传到同一个文件夹class Images(models.Model):    def upload_design_to(filename):        return f'{Item.designer}/{Item.title}/{filename}'    item = models.ForeignKey(Item, on_delete=models.CASCADE)    name = models.CharField(max_length=50, blank=True)    image = models.ImageField(blank=True, upload_to=upload_design_to)    def __str__(self):        return self.name
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您不重复自己的解决方案是调用upload_design_to相关的Item


class Images(models.Model):

    def upload_design_to(self, filename):

        return self.item.upload_design_to(filename)


    item = models.ForeignKey(Item, on_delete=models.CASCADE)

    name = models.CharField(max_length=50, blank=True)

    image = models.ImageField(blank=False, upload_to=upload_design_to)


查看完整回答
反对 回复 2023-04-11
?
喵喔喔

TA贡献1735条经验 获得超5个赞

class Images(models.Model):

    def upload_design_to(self, filename):

        return f'{self.item.designer}/{self.item.title}/{filename}'


    item = models.ForeignKey(Item, on_delete=models.CASCADE)

    name = models.CharField(max_length=50, blank=True)

    image = models.ImageField(blank=True, upload_to=upload_design_to)


    def __str__(self):

        return self.name

关于您提出的错误,您还可以为max_length文件字段设置一个属性,这样它就不会超过文件限制。您可以将其设置为 10000000 或足以容纳您的文件的长度。


查看完整回答
反对 回复 2023-04-11
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信