标签: imagefield

当我从数据库/模型中删除对象时,如何让Django Admin删除文件?

我使用1.2.5标准ImageField并使用内置存储后端.文件上传很好但是当我从管理员删除条目时,服务器上的实际文件不会删除.

django storage file django-models imagefield

84
推荐指数
6
解决办法
4万
查看次数

如何检查ImageField是空的

我的模型中有一个ImageField,当我保存它时,我想检查它是否为无.

在django shell中,我正在调用我的对象的ImageField,它给出:

>>> p.avatar
<ImageFieldFile: None>
>>> p.avatar is None
False
Run Code Online (Sandbox Code Playgroud)

我发现ImageField的名字是你的',所以还有更好的方法吗?

django imagefield

31
推荐指数
1
解决办法
1万
查看次数

替换Django图像不会删除原始图像

在Django中,如果模型中有ImageFile,则删除将从磁盘中删除关联文件以及从数据库中删除记录.

不应该替换图像还从磁盘中删除不需要的文件?相反,我发现它保留了原始内容并添加了替代品.

现在删除对象不会删除原始文件只替换.

这样做有什么好的策略吗?如果我的用户频繁更换图像,我不想拥有一堆孤儿文件.

python django imagefield

24
推荐指数
4
解决办法
1万
查看次数

Django:在视图中获取ImageField网址

我试图在Django视图中获取ImageField绝对路径,这样我就可以打开图像,在上面写一些东西,然后将其提供给用户.

我在获取保存在媒体文件夹中的图像的绝对路径时遇到问题.

item = get_object_or_404(Item, pk=pk)
absolute_url = settings.MEDIA_ROOT + str(item.image.path)
Run Code Online (Sandbox Code Playgroud)

我得到错误,item.image没有path(The 'banner' attribute has no file associated with it.).item.image是ImageField,我想知道如何获取图像字段中保存的图像的绝对路径(在Django视图中).

django view absolute-path imagefield

24
推荐指数
2
解决办法
5万
查看次数

Django - 显示ImageField

我刚刚开始使用django,我还没有找到很多关于如何显示imageField的信息,所以我做了这个:

models.py

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo = models.ImageField(upload_to='site_media')
Run Code Online (Sandbox Code Playgroud)

views.py

def image(request):
    carx = Car()
    variables = RequestContext(request,{
        'carx':carx
    })
    return render_to_response('image.html',variables)
Run Code Online (Sandbox Code Playgroud)

image.html

{% extends "base.html" %}
{% block content %}
   <img src=carx />
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我已经保存了一个图像,因为终端,我知道在那里,如果在image.html中这样做:

{% block content %}
    {{ carx }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

输出是:汽车对象

谁能告诉我我的错误在哪里?

非常感谢.

python django imagefield

20
推荐指数
1
解决办法
2万
查看次数

Django:从服务器上的现有文件手动创建模型中的imagefield

这是在杀我!

我正在使用django-filebrowser,我想创建一个图库应用程序,利用它的上传功能来管理图像.

我有一个Gallery模型,允许用户在服务器上选择或创建目录,并将文件上传到该文件夹​​以显示在库中.我想自动搜索用户已将图像上传到的目录,然后选择该目录,然后自动为该文件夹中的每个图像创建图像实例.

class Gallery(model.Models):
    gallerydirectory = FileBrowserField(...)
    title = ...
    description ...

class Image(model.Models):
    image_field = models.ImageField()
Run Code Online (Sandbox Code Playgroud)

问题是FileBrowser表示图像与Django不同,但我想使用DJango ImageFields,因为我可以在模板端使用其他应用程序(sorl缩略图).

我有文件所需的所有数据,即文件名,路径等,我只是无法让Django创建一个ImageField的实例,而无需再次实际上传图像.我只是想填充它.

在这里看到另一个提示如下的线程:

for image in filebrowser_image_objects_list:
    f = File(open('path-to-file-on-server','r'))
    i = Image()
    i.image_field('filename.png',f.read())
Run Code Online (Sandbox Code Playgroud)

但这给了我一个:

SuspiciousOperation error
Attempted access to '/filename.png' denied 
Run Code Online (Sandbox Code Playgroud)

这表明路径没有被正确读取.我打印了文件对象的属性,它正在打开正确的图像,它只是没有被传递到ImageField

帮助将非常感谢!

UPDATE

我已经放弃了尝试这项工作,因为它太乱了.我上面遇到的问题是我将ImageField的upload_field设置为'/'并且它没有被注意到意味着该文件被写入'/something.png'.

我已对其进行了修改,以便Image现在也使用FileBrowserField而不是ImageField.

python django django-models django-filebrowser imagefield

18
推荐指数
2
解决办法
2万
查看次数

覆盖django的模型删除方法以进行批量删除

我正在重写Django的模型删除方法,以便删除磁盘中用于图像字段的孤立文件,如下所示:

class Image(models.Model):
    img = models.ImageField(upload_to=get_image_path)
    ...
    def delete(self, *args, **kwargs):
        self.img.delete()
        super(Image, self).delete(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当我从管理员中删除单个对象时这很好用,但是当我选择多个对象并删除它们时,似乎没有被调用.我已经谷歌搜索了一段时间,但没有找到正确的关键字来得到答案,也没有官方文档似乎谈论这个主题.

django model bulk imagefield

18
推荐指数
3
解决办法
1万
查看次数

删除具有ImageField字段的对象时,不删除图像文件

我有一个模型Picture与一个ImageField.删除实例时Picture,ImageField不删除该文件集.

这是一个错误吗?我该怎么做?

django imagefield

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

如何将django图像场形成PIL图像并返回?

给定django图像字段,如何创建PIL图像,反之亦然?

简单的问题,但很难谷歌:(

(我将使用django-imagekit的处理器来旋转已经存储为模型属性的图像.)

编辑

In [41]: m.image_1.__class__
Out[41]: django.db.models.fields.files.ImageFieldFile

In [42]: f = StringIO(m.image_1.read())

In [43]: Image.open(f)
---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-43-39949b3b74b3> in <module>()
----> 1 Image.open(f)

/home/eugenekim/virtualenvs/zibann/local/lib/python2.7/site-packages/PIL/Image.pyc in open(fp, mode)
   2023                 pass
   2024
-> 2025     raise IOError("cannot identify image file")
   2026
   2027 #

IOError: cannot identify image file

In [44]:
Run Code Online (Sandbox Code Playgroud)

django python-imaging-library imagefield

12
推荐指数
2
解决办法
6800
查看次数

django S3 - 修剪图像文件名但不是网址路径

这是我的问题的后续跟进:ImageField/FileField Django表单目前无法修剪文件名的路径

在我的Django应用程序中,有一个上传到S3的图像字段修剪图像文件路径名后,由于修剪了网址,因此无法访问该图像.我如何修剪显示但不修剪路径?

我设法修剪显示文件名的显示

class CustomClearableFileInput(ClearableFileInput):

    def get_context(self, name, value, attrs):
        logging.debug("%s",name)
        logging.debug("%s",value)
        value.name = path.basename(value.name)
        context = super().get_context(name, value, attrs)       
        return context

    class CompanySettingEdit(forms.ModelForm):
       company_logo = forms.ImageField(widget=CustomClearableFileInput)
Run Code Online (Sandbox Code Playgroud)

这是输出:

https://imgur.com/a/M42Mz <-- display correct
https://bucketname.s3.amazonaws.com/media/certiport_logo.png <-- invalid url
Run Code Online (Sandbox Code Playgroud)

如果我不修剪它:

class CustomClearableFileInput(ClearableFileInput):

    def get_context(self, name, value, attrs):
        logging.debug("%s",name)
        logging.debug("%s",value)
        # value.name = path.basename(value.name) <-- remove this
        context = super().get_context(name, value, attrs)       
        return context

    class CompanySettingEdit(forms.ModelForm):
       company_logo = forms.ImageField(widget=CustomClearableFileInput)
Run Code Online (Sandbox Code Playgroud)

这是输出:

https://imgur.com/a/rGi8f <-- display incorrect
https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png <--valid url
Run Code Online (Sandbox Code Playgroud)

我的目标是:

display: certiport_logo.png
url: https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png …
Run Code Online (Sandbox Code Playgroud)

python django amazon-s3 imagefield

10
推荐指数
1
解决办法
317
查看次数