基于外键值的upload_to

我有一个Image模型。我希望它根据用户选择的类别上传到文件夹。例如,如果用户选择“苹果”类别,我希望它上传到名为“苹果”的媒体文件夹中。

class Image(models.Model):
    image = models.ImageField(upload_to=category)
    category = models.ForeignKey(Category,on_delete=models.CASCADE)
bellebei 回答:基于外键值的upload_to

您可以将可调用对象传递到以原始文件的category和参数self作为参数的filename

因此,您可以将其定义为:

from os.path import join as osjoin

class Image(models.Model):

    def image_dir(self,filename):
        return osjoin(str(self.category),filename)

    image = models.ImageField(upload_to=image_dir)
    category = models.ForeignKey(Category,on_delete=models.CASCADE)

请注意,这里我假设您已经为Category模型提供了一种__str__方法。但是,您可以将str(self.category)更改为例如:self.category.name,例如,如果Category有一个name字段,并且您想使用它。

本文链接:https://www.f2er.com/3092459.html

大家都在问