Django admin 显示图片
我有一个表用来储存轮播图片,有一个 `picture` 字段储存的是图片的url,图片的 url 通过上传文件到 cdn 获得。目前这个表的编辑是通过自定义一个 `ModelForm`,然后重写 Django admin 逻辑将文件上传到 cdn 获取地址后,储存到数据库。
# 自定义表单
class PuzzleImgForm(forms.ModelForm):
picture = forms.FileField(label='图片', required=False) # 覆盖 Django admin 代码
def get_form(self, request, obj=None, **kwargs):
return PuzzleImgForm # 数据表只储存图片链接
picture = models.CharField("图片url", max_length=2048, null=True, blank=True)
现在,遇到一个问题,修改图片的时候看不到图片的样子,只能看到 url,不够直观。于是我就搜索 `django admin form show image`。发现一个答案比较简洁,尝试并修改了部分,成功了。
def image_img(self):
if self.image:
return marksafe('<img src="%s" />' % self.image_url)
else:
return '(no image)' image_img.short_description = 'Thumb' # and in your admin.py add:
list_display= ('image_img','product',)
readonly_fields = ('image_img',) #and for adding it in the 'Edit mode' of your admin panel in your admin.py add:
fields = ( 'image_img', )
我这里的问题是,使用 fields 会覆盖自定义的表单,admin 页面上只出现一个 image_img 字段。如果删除 fields,将 `image_img` 加入 `ist_display`,那么 `image_img` 不会出现。最后我将其放入 `readonly_fields` 才生效。
我的思考
关于重写 Django admin
能使用大部分 Django 已有的功能,只需要重写少部分排版与筛选。覆盖 Django 源码可能会很麻烦。
关于Django 用法
`list_display` 与 `fields` 有什么区别?
关于向下兼容与重构
我们写代码的时候,看到之前的代码,想的更多是重构掉,而不是向下兼容,因为往往之前的代码存在各种问题,保持继续兼容反而会更难受。比如 python2 的编码问题,python3 就彻底不同,从 ASCII 改为 UNICODE。我认为,保持兼容是要之前的代码立意、逻辑正确,才有意义。但是,一开始写代码,一些情况、需求往往和之后的会不一样,这种情况要怎么处理?
Django admin 显示图片的更多相关文章
- SQLAlchemy连接数据库并在django admin显示
SQLAlchemy 0.7 postgersql 9.0 SQLAlchemy连接数据库有两种方法,一种是classic,一种是modern 1,modern方法 from sqlalch ...
- django后台显示图片 而不是图片地址
修改admin代码 class Ad_CampaingAdmin(admin.ModelAdmin): list_display = ("content","previe ...
- django admin显示多对多字段
参考文档https://jingyan.baidu.com/article/4e5b3e190f55c591901e24b3.html admin.py from .models import *cl ...
- django admin显示多对多字段ManyToManyField
参考文档https://jingyan.baidu.com/article/4e5b3e190f55c591901e24b3.html admin.py from .models import *cl ...
- Django Admin 图片路径设置显示为图片(imageField显示方法设置)
一 使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7 (Windows x86-64 executable in ...
- django上传并显示图片
环境 python 3.5 django 1.10.6 步骤 创建名为 testupload的项目 django-admin startproject testupload 在项目testupload ...
- Django Admin site 显示问题
Django Admin site 显示问题 今天配置了一下Django admin site,可是admin site的显示有一些问题,当我打开源码.訪问里面的admin 的css 文件时候,htt ...
- django admin编辑被外键关联的主表时支持显示字表记录
假设有模型 class A(models.Model): name = models.CharField() class B(models.Model): name = models.CharFiel ...
- Django admin 权威指南(一)
版本: Django 1.10 此部分由官方文档<6.5.1 The Django admin site>翻译而来. 6.5.1.1 概览 默认情况下,使用startproject的时候, ...
随机推荐
- 关于 python
关于python的版本: python2.7 和 python3.0 有很大的不同,学习时应因目的而做出选择. 目前用到的python2.7最多, 而web3.0时代 则用到的python3.0 所 ...
- [Linux 性能检测工具]VMSTAT
VMSTAT NAME: Vmstat: 报告虚拟内存统计 语法 : vmstat [-a] [-n] [-t] [-S unit] [delay [ count]] ...
- javascript-抽象工厂模式
抽象工厂模式笔记 1.抽象工厂模式创建多个抽象类,创建出的结果是一个类簇(这里是抽象类的集合) 2.抽象工厂中传入的父类是否是抽象工厂方法创建的抽象类进行判断,不是则抛出错误 3.子类通过 ...
- iOS 读取相册二维码,兼容ios7(使用CIDetector 和 ZXingObjC)
ios从相册读取二维码,在ios8以上,苹果提供了自带的识别图片二维码的功能,这种方式效率最好,也是最推荐的,但是如果你的系统需要向下兼容ios7,就必须用其他方式. 这里我选择的是 ZXingObj ...
- dpkg
dpkg是debian最早提出的一个软件包管理工具,因为早期并没有考虑到当下软件包之间这么复杂的依赖关系,所以并不能自动解决软件包的依赖问题,这个命令多用于安装本地的.deb软件包,也可以进行软件包的 ...
- WIN32 API编程之 tap顺序
用CreateWindow 函数创建的控件,如果想使用tap键切换,最简单的做法是:主窗口有WS_EX_CONTROLPARENT扩展属性,控件有WS_TAPSTOP属性. 然后最重要的是,在处理消息 ...
- Stanford机器学习笔记-4. 神经网络Neural Networks (part one)
4. Neural Networks (part one) Content: 4. Neural Networks (part one) 4.1 Non-linear Classification. ...
- docker-image container 基本操作 -常用命令
基本概念: container 容器.可以把每个 container 看做是一个独立的主机. container 的创建通常有一个 image 作为其模板.类比成虚拟机的话可以理解为 image 就是 ...
- Android驱动入门-LED--HAL硬件抽象层程序设计①
硬件平台: FriendlyARM Tiny4412 Cortex-A9 操作系统: UBUNTU 14.04 LTS 时间:2016-09-21 16:15:26 设计HAL硬件抽象层程序,则需要 ...
- [No00000A]计算机的存储单位
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位. 字节 byte:8个二进制[bit (比特)(Binary Digits)]位为一个字节(B), ...