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的时候, ...
随机推荐
- js简单解密(eval解密)
今天看博客园文章,看到一篇比较好的文章. 今天又学会一招,可以对一些采用eval加密的js进行解密. 打开谷歌或者火狐浏览器,然后按 F12,接着把这代码复制进去, 最后,去掉开头 4 个字母 eva ...
- php示例代码使用mysql_fetch_assoc函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- EF框架学习手记
转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...
- C#语句1:选择语句二(switch break)
(二)switch case switch case 必须与 break 一同使用.break是跳转语句.与switch case连用的时候是跳出最近的{}. 注: ●若case后面接收的是字符串类型 ...
- CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13
CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.132013-10-24 15:31:12标签:服务器 防火墙 file 配置文件 written 一.配置好I ...
- oracle学习笔记系列------oracle 基本操作之基本函数的用法
--创建一个accout账户表 CREATE TABLE account( id ) NOT NULL, recommender_id ), login_name ) NOT NULL, login_ ...
- Linux rpm 查询
[root@wang /]# rpm -qa // 查看安装所有包 [root@wang /]# rpm -qa |grep vim // 查询所安装的包 +包名 [root@wang /]# rpm ...
- 错误 未能找到类型或命名空间名称 (是否缺少 using 指令或程序集引用?)
有时发现,明明引用了,结果却提示未引用, 这时就有可能是两个程序集的目标框架类型不一致导致的(在程序集属性面板里改下即可).
- 记一次惨痛的线上bug
讲述背景,刚入职新公司2个月的时候,接手一个红包系统.资历尚浅,对业务也不是很熟悉.公司开发新的平台,需要使用红包功能来进行推广,按照产品的需求,进行开发...然而,问题就出在这里,红包接口比较陈旧, ...
- MyBatis使用总结+整合Spring
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...