django 修改model field后台默认的显示方式
来源:互联网 发布:淘宝售后管理在哪 编辑:程序博客网 时间:2024/06/06 10:08
我们都知道django模型在后台有默认的显示方式,它的显示是靠widget(不了解widget参考:https://docs.djangoproject.com/en/dev/ref/forms/widgets/)这种方式,所以要修改feild的默认显示方式,需要自定义widget,下面是一个自定义ImageField的widget
django默认的ImageField在后台显示的是image的url,我们更希望看到image的thumbnail,那要怎么做呢:
1、model
class RecommendApp(models.Model): slider_image=models.ImageField('幻灯截图',upload_to="slider",null=True,blank=True)
2、在widget.py中自定义imageWidget
#coding=utf8from django.forms.widgets import ClearableFileInput,CheckboxInputfrom django.utils.html import escape, conditional_escapefrom django.utils.encoding import StrAndUnicode, force_unicodefrom django.utils.safestring import mark_safeclass ImageWidget(ClearableFileInput): def render(self, name, value, attrs=None): substitutions = { 'initial_text': self.initial_text, 'input_text': self.input_text, 'clear_template': '', 'clear_checkbox_label': self.clear_checkbox_label, } template = u'%(input)s' substitutions['input'] = super(ClearableFileInput, self).render(name, value, attrs) if value and hasattr(value, "url"): template = self.template_with_initial substitutions['initial'] = (u'<a href="%s" target="_blank"><img width="100px" height="100px" src="%s"></a>' % (escape(value.url), escape(value.url))) if not self.is_required: checkbox_name = self.clear_checkbox_name(name) checkbox_id = self.clear_checkbox_id(checkbox_name) substitutions['clear_checkbox_name'] = conditional_escape(checkbox_name) substitutions['clear_checkbox_id'] = conditional_escape(checkbox_id) substitutions['clear'] = CheckboxInput().render(checkbox_name, False, attrs={'id': checkbox_id}) substitutions['clear_template'] = self.template_with_clear % substitutions return mark_safe(template % substitutions)
3、在admin.py中添加自定义widget
class RecommendAppAdmin(admin.ModelAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name=='slider_image': kwargs['widget']=ImageWidget try: del kwargs['request'] except KeyError: pass return db_field.formfield(**kwargs) return super(RecommendAppAdmin, self).formfield_for_dbfield(db_field, **kwargs)admin.site.register(RecommendApp,RecommendAppAdmin);
通过上面这3步就能在后台看到image的缩略图了
- django 修改model field后台默认的显示方式
- django Model Field options
- django model field类型
- django model field
- Django修改app在Admin后台显示的名称
- django model field validator 设置
- django model field 设置默认值
- 如何动态设置django的model field的默认值
- Django Model字段类型(Field Types)
- 通过django的meta类来修改自动后台显示的模块名称
- django中admin后台界面的英文修改为中文显示
- 修改Win7文件/文件夹默认显示方式
- Django ModelForm修改默认的控件属性
- Django 模型字段类型总结 (Django Model field types summary)
- 修改c3p0默认后台的日志输出
- 汉化django默认admin后台
- django中使用south同步对model的修改
- django manytomany field修改关联数据库问题
- 二次函数的判别式
- Linux Socket编程(不限Linux)
- Android保存和恢复activity状态数据
- node.js能做什麽?
- 7月23日iOS开源项目选编
- django 修改model field后台默认的显示方式
- codeIgniter加载第三方库
- 用C++写Hadoop streaming实例1
- php 日期处理
- window ssh
- Android UI 组件开源软件 共有47款
- git patch
- 无聊写写
- 解决plsql dev无法在win7-64bit中运行问题