相关疑难解决方法(0)

以编程方式将图像保存到Django ImageField

好吧,我已经尝试了几乎所有的东西,我无法让它工作.

  • 我有一个带有ImageField的Django模型
  • 我有通过HTTP下载图像的代码(测试和工作)
  • 图像直接保存到'upload_to'文件夹中(upload_to是在ImageField上设置的文件)
  • 我需要做的就是将现有的图像文件路径与ImageField相关联

我已经用6种不同的方式编写了这段代码.

我遇到的问题是我写的所有代码都会导致以下行为:(1)Django将生成第二个文件,(2)重命名新文件,在文件末尾添加_ name,然后(3)不传输任何数据,基本上是一个空的重命名文件.'upload_to'路径中剩下的是2个文件,一个是实际图像,一个是图像的名称,但是是空的,当然ImageField路径设置为Django尝试创建的空文件.

如果不清楚,我会试着说明:

## Image generation code runs.... 
/Upload
     generated_image.jpg     4kb

## Attempt to set the ImageField path...
/Upload
     generated_image.jpg     4kb
     generated_image_.jpg    0kb

ImageField.Path = /Upload/generated_image_.jpg
Run Code Online (Sandbox Code Playgroud)

如果Django没有尝试重新存储文件,我怎么能这样做呢?我真正喜欢的是这个效果......

model.ImageField.path = generated_image_path
Run Code Online (Sandbox Code Playgroud)

......但当然这不起作用.

是的,我已经经历这里的其他问题,如走了这一个,以及对Django的DOC 文件

更新 进一步测试后,它只在Windows Server上的Apache下运行时才会出现此问题.在XP上的"runserver"下运行时,它不会执行此行为.

我很难过.

这是在XP上成功运行的代码...

f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()
Run Code Online (Sandbox Code Playgroud)

python django django-models

192
推荐指数
9
解决办法
12万
查看次数

从函数内部创建并返回默认的ImageFieldFile

在我的用户配置模式,我想有它返回一个函数或者用户ImageFileField,如果用户还没有上传自己的对象或默认图像.

例如:

class UserProfile(models.Model):
    pic = models.ImageField('Headshot',blank=True,
                             upload_to=get_path_and_filename)

    def get_pic(self):
        if self.pic:
            return self.pic
        else:
            # return ImageFileField with a default value
Run Code Online (Sandbox Code Playgroud)

我想返回一个等价物,ImageFileField因为我有使用此对象类型的过滤器(所以我不能简单地将它传递给它一个字符串)...我试着查看源代码,但我无法弄清楚如何自己动手吧.

是否有一种简单的方法来初始化一个新ImageFileField对象,方法是将其传递给图像文件然后返回它?

PS:我曾考虑使用ImageField 的默认设置,但是,它似乎不太灵活,因为文件存储在模型创建中...如果我以后想要更改默认文件,我将不得不更新所有数据库具有旧文件的条目.

django django-models

5
推荐指数
1
解决办法
4032
查看次数

标签 统计

django ×2

django-models ×2

python ×1