首页 > 其他分享 >django admin 字段设置

django admin 字段设置

时间:2023-02-16 02:44:05浏览次数:27  
标签:widget show admin fields django 设置 import

来源:http://xieboke.net/article/100/

django admin 后台里有些输入框长度、宽度、提示语等,可能不满足我们的需求,这个时候,我们就需要对 admin 的样式进行更改。 还是先从 django 官网 找文档,发现 widget 是可以再 admin.py 里面重写的,只需要用到 django.contrib.admin.ModelAdmin.formfield_overrides(这个属性通过一种临时的方案来覆盖现有的模型中 Field (字段)类型在admin site中的显示类型。formfield_overrides 在类初始化的时候通过一个字典类型的变量来对应模型字段类型与实际重载类型的关系。)

 

方法一: 只改 admin.py ,缺点是 只能针对某种字段类型,不能指定字段。

# admin.py

 1 from django.contrib import admin
 2 from django.forms import widgets
 3 from apps.blog.models import *
 4 
 5 
 6 class ArticleAdmin(admin.ModelAdmin):
 7     list_display = ['id', 'thumb_shouw', 'title', 'node', 'num_views', 'show_status', 'slug', 'user']
 8     list_display_links = ['id', 'thumb_shouw', 'title', 'node', 'num_views', 'user']
 9     search_fields = ['title_short', 'user', 'content']
10     list_editable = ["show_status", ]
11     # style_fields = {"content": "ueditor"}
12     readonly_fields = ('slug',)
13     show_detail_fields = ['show_status', ]
14 
15     # 重写 字段类型 的 widget, attrs 属性可以设置前端样式
16     formfield_overrides = {
17         models.IntegerField: {'widget': widgets.NumberInput(attrs={"style": "width:50em;", })},
18         models.CharField: {'widget': widgets.TextInput(attrs={"style": "width:50%;", "placeholder": "请输入内容"})},
19     }
20 
21 
22 admin.site.register(Article, ArticleAdmin)

 

方法二:此方法可以指定字段,而不是字段类型。 来源:https://timonweb.com/posts/override-field-widget-in-django-admin-form/

1. 首先 在 forms.py 新建一个 表单 ArticleAdminFrom # forms.py

 1 from django import forms
 2 from django.forms.widgets import TextInput
 3 from apps.blog.models import Article
 4 
 5 
 6 class ArticleAdminForm(forms.ModelForm):
 7     class Meta:
 8         model = Article
 9         fields = '__all__'
10         widgets = {
11             "title": TextInput(attrs={"style": "width:50%;", "placeholder": "请输入标题"}),
12         }

 

2. 然后在 admin.py 里面启用自定义的 ArticleAdminForm # admin.py

 1 from django.contrib import admin
 2 from django.forms import widgets
 3 from apps.blog.models import *
 4 from apps.blog.forms import ArticleAdminForm
 5 
 6 
 7 class ArticleAdmin(admin.ModelAdmin):
 8     form = ArticleAdminForm  # 指定了表单,就不要再用 formfield_overrides 了
 9 
10     list_display = ['id', 'thumb_shouw', 'title', 'node', 'num_views', 'show_status', 'slug', 'user']
11     list_display_links = ['id', 'thumb_shouw', 'title', 'node', 'num_views', 'user']
12     search_fields = ['title_short', 'user', 'content']
13     list_editable = ["show_status", ]
14     # style_fields = {"content": "ueditor"}
15     readonly_fields = ('slug',)
16     show_detail_fields = ['show_status', ]
17 
18     # 重写 字段类型 的 widget, attrs 属性可以设置前端样式
19     # formfield_overrides = {
20     #     models.IntegerField: {'widget': widgets.NumberInput(attrs={"style": "width:50em;", })},
21     #     models.CharField: {'widget': widgets.TextInput(attrs={"style": "width:50%;", "placeholder": "请输入内容"})},
22     # }
23 
24 
25 admin.site.register(Article, ArticleAdmin)

 

标签:widget,show,admin,fields,django,设置,import
From: https://www.cnblogs.com/ldx-wsj/p/17125306.html

相关文章

  • CRUD-U,discuz,设置discuz帖子内上传的图片显示大小
    Discuz!  或者Discuz!x中默认帖内图片最大宽度是600px,当用户需要在发表的帖子内发表宽度大于600px的图片时,可以把图片显示宽度放大,防止图片被压缩导致失真。帖内......
  • MybatisPlus查询条件设置详解
    select设置需要查询的字段例: 指定查询主键,名字,年龄字段select("id", "name", "age")例: 查询以test开头的属性select(i ‐> i.getProperty().startsWith("t......
  • JAVA线上参数设置及常见问题
    常用配置参数jar包启动配置命令java-Xmx8g-Xms8g-XX:+UseG1GC-jar/home/pgcp/pgcp-0.0.1-SNAPSHOT.jartomcat启动配置参数在/bin/catalina.sh中/cygwin=false前......
  • Python+Django(4):创建其他网页(模板继承)
    模板继承:1,修改主页父模板:抽取通用元素,在index.html同级目录下新建base.html<p><ahref="{%url'learning_logs:index'%}">LearningLog</a></p>{%blockcont......
  • Spring Boot项目设置跨域
    一、跨域设置新建一个配置类importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;im......
  • Django——报错信息
    安装报错:报错信息:ValueError:nosignaturefoundforbuiltin<built-infunctionopenssl_md5>解决方法:这个上面写的是MD5错误,但不是这个样子,只是因为运行的配置......
  • Django版本要求的Python版本
    版本对应表Django版本Python版本2.23.5,3.6,3.7,3.8(addedin2.2.8),3.9(addedin2.2.17)3.13.6,3.7,3.8,3.9(addedin3.1.3)3.23.6,3.7......
  • Ignite系列值7-api方式如何设置默认值
    问题1:Ignite中需要添加默认值,前端未传值的情况下,在Ignite内存数据库中以及异步落库的数据库中都需要有对应的默认值。结论:目前无法通过自定义注解方式设置默认值原因:现......
  • django解决跨域请求
    安装django-cors-headerspython-mpipinstalldjango-cors-headers在#setting.py下添加如下代码INSTALLED_APPS=[...,"corsheaders",...,]MIDDL......
  • Python+Django(3):创建主页
    打开项目主文件夹learning_log中的文件urls.py:fromdjango.contribimportadminfromdjango.urlsimportpath,re_pathasurl,includeurlpatterns=[pat......