我有models.py分钱:

class Item(models.Model):
    image_file = models.ImageField(upload_to='images')
    image_url = models.URLField()

我希望Django自动下载和本地保存图像从image_url和连接它与image_file

How it should act:

  1. 我贴https://docs.djangoproject.com/s/img/site/hdr_logo.gif
  2. 单击"保存"
  3. 在模板中写<img src="{{ item.image_file.url }}">.它显示出 来self 的服务器的图像,而不是djangoproject.com

What I've tried:

我已经改写了Item类的save个方法.我通过urllib在本地保存了图像,但我坚持将此保存的图像与image_file字段连接起来

推荐答案

from django.core.files import File
import os

class Item(models.Model):
    image_file = models.ImageField(upload_to='images')
    image_url = models.URLField()

...

def get_remote_image(self):
    if self.image_url and not self.image_file:
        result = urllib.urlretrieve(self.image_url)
        self.image_file.save(
                os.path.basename(self.image_url),
                File(open(result[0]))
                )
        self.save()

您可以覆盖默认的save()方法以自动调用get_remote_image().

请参阅:https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods

Django相关问答推荐

Django相关对象引用模板

如何创建为模型创建信号的Djangodecorator ?

创建用户/将用户登录到客户端服务器的标准OAuth/OIDC流程是什么?

如何从Django';S模型中的方法中检索值?

通过在其他查询中使用来过滤对象

在 Django 中按月份和年份对帖子进行分类

Django 获取用户创建的对象,这些用户属于用户列表

基于令牌的身份验证如何工作?

Django ORM __in 但不是精确的,包含不区分大小写的?

如果上下文中缺少变量,如何使 Django 模板引发错误

如何在 Django Rest Framework SimpleRouter 上使斜杠可选

__init__() 得到了一个意外的关键字参数user

清理提交的表单数据中的 HTML

Django ALLOWED_HOSTS IP 范围

在 Django 中使用 LiveServerTestCase 时使用代码登录

如何测试 Django QuerySets 是否相等?

如何在 django 2.0 admin 中使用 allow_tags?

AWS Cognito 作为网站的 Django 身份验证后端

警告:找不到分发的 svn 位置==0.6.16dev-r0

如何使用 Django/nginx 部署仅限 HTTPS 的站点?