我正在为DJango做一个图像库项目,只是为了它。好吧,我有一个名为Gallery
的类和一个名为ImageGallery
的类。
名为gallery的类看起来像这样:
class Gallery(models.Model):
gallery = models.ForeignKey(Gallery, related_name="parent_gallery")
title = models.CharField(max_length=200)
folder = models.CharField(max_length=200) # ex: images/galleries/slugify(self.title)
class ImageGallery(models.Model):
gallery = models.ForeignKey(Gallery, related_name="parent_gallery")
title = models.CharField(max_length=200)
image = models.ImageField(upload_to=self.gallery.folder)
嗯,最后一行代码是我想知道的,如果它可能或任何其他精细替代它。
在DJango-admin
我希望能够为表ImageGallery
添加记录,并在选择我想要使用的Gallery
时,将要保存的图像保存到指定的文件夹中在gallery.folder
字段中。
解决这个问题的最佳方法是什么?我还没有写完这两门课,但我怀疑他们会这样工作。先感谢您。 :-)
答案 0 :(得分:4)
此属性提供了一种设置上载目录和文件的方法 名称,可以通过两种方式设置。在这两种情况下,都会传递该值 到Storage.save()方法。 ... upload_to也可以是可调用的, 比如一个功能。这将被调用以获取上传路径, 包括文件名。这个callable必须接受两个参数和 返回一个Unix样式的路径(带正斜杠)传递给 存储系统。这两个论点是:
但self.gallery.folder
不可调用。您需要的是沿着该示例中给出的行设置一个函数
def get_upload_path(instance, filename):
return '{0}/{1}'.format(instance.gallery.folder, filename)
您的模型将更改为
image = models.ImageField(upload_to=get_upload_path)