因为我希望Charfield字符串将我的图像保存在特定的文件夹中。我想从Django的CharField传输或提取字符串
我尝试了to_python方法,该方法在类级别不起作用。
class Project(models.Model):
filename = models.CharField(max_length=150)
cata = models.CharField(max_length=150)
image = models.ImageField(max_length=100, upload_to= 'ourwork/image/' + str(cata) + '/' + str(filename) , default='ourwork/default/default.png', verbose_name='图片')
def __str__(self):
return self.filename
我想查看我在Django管理控制台上上传的图像以显示在“ ourwork / project / image”文件夹中
答案 0 :(得分:0)
简短答案:使用 callable 并让可调用对象根据模型对象的字段计算upload_to
属性。
您可以将可调用用作FileField.upload_to
attribute [Django-doc],如文档所述:
upload_to
也可以是可调用的,例如函数。这将 被调用以获得上传路径,包括文件名。这个 可调用的必须接受两个参数并返回Unix风格的路径 (带有正斜杠)将被传递到存储系统。
因此我们可以将其定义为:
def our_upload_to(instance, filename):
return 'ourwork/image/{}/{}'.format(instance.cata, instance.filename)
class Project(models.Model):
filename = models.CharField(max_length=150)
cata = models.CharField(max_length=150)
image = models.ImageField(max_length=100, upload_to=our_upload_to, default='ourwork/default/default.png', verbose_name='图片')
def __str__(self):
return self.filename
因此,我们在此基于upload_to
(第一个参数)计算instance
参数,而忽略了最初由上传文件的用户提供给文件的文件名。