Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django图像模型,使用泛型关系动态上传函数_Python_Django_Django Models_Image Uploading_Django Generic Relations - Fatal编程技术网

Python Django图像模型,使用泛型关系动态上传函数

Python Django图像模型,使用泛型关系动态上传函数,python,django,django-models,image-uploading,django-generic-relations,Python,Django,Django Models,Image Uploading,Django Generic Relations,我正在创建一个图像模型,其他模型将通过通用关系使用该模型。例如,新闻发布和事件将具有图像。下面是示例图像模型 class Image(models.Model): description = models.CharField(max_length=500, null=True, blank=True) image = models.ImageField(upload_to=get_storage_path) content_type=models.ForeignKey(Con

我正在创建一个图像模型,其他模型将通过通用关系使用该模型。例如,新闻发布和事件将具有图像。下面是示例图像模型

class Image(models.Model):
   description = models.CharField(max_length=500, null=True, blank=True)
   image = models.ImageField(upload_to=get_storage_path)

   content_type=models.ForeignKey(ContentType,on_delete=models.CASCADE)
   object_id = models.PositiveIntegerField()
   content_object = GenericForeignKey()
这将只在一个目录中存储映像。
但是,问题是我不知道如何编写一个动态的
上传到
函数,将图像存储在相应的目录中,例如
images/news/
images/events

如果需要在多个位置保存一个文件:签出


如果您只需要根据相关对象动态设置upload_to文件夹:可能是一个重复的线程来回答您的问题。

upload_to
处理程序执行,
实例
文件名
。您可以检查
实例
,找出对象与哪种内容类型关联:

def get_storage_path(instance, filename):
    # This is just an example - you'll need to use the right name
    # depending on the model class.
    if instance.content_type.model == 'news':
         # Generate filename here
    else:
         # Generate different file name here