2019独角兽企业重金招聘Python工程师标准>>> hot3.png

django的CharField在admin后台的默认展示方式时input的形式,有时我们需要修改成textarea用来优化输入。

我们可以在admin.py中做处理,以下例子:

第一种方式我们定义一下fromfield_overrides

from django.contrib import admin
class SchoolAdmin(admin.ModelAdmin):
   formfield_overrides = {models.CharField: {'widget': forms.Textarea},}
admin.site.register(School, SchoolAdmin)

这样之后,school的编辑页面的所有charfield的编辑方式都将变为textarea的形式,但我们也许需要指定特定的字段修改type

第二种 重写formfield_for_dbfield方法

class SchoolAdmin(admin.ModelAdmin):
   # formfield_overrides = {models.CharField: {'widget': forms.Textarea},}
   def formfield_for_dbfield(self, db_field, **kwargs):
      formfield = super(SchoolAdmin, self).formfield_for_dbfield(db_field, **kwargs)
      if db_field.name in ['intro', 'base_info']:
         formfield.widget = forms.Textarea(attrs=formfield.widget.attrs)
      return formfield
admin.site.register(School, SchoolAdmin)

做一个fieldname的判断处理,这样就可以指定字段为指定类型

首先先来说一下 admin 中一些基础的配置 list_display # 用来配置列表页面展示哪些字段 list_display_links # 用来配置哪些字段可以作为链接,点击之后进入 编辑 页面 list_filter # 配置之页面的过滤器,需要通过哪些字段来过滤列表页面 search_fields # 配置搜索字段 actions_on_top # 动作相关的配置,是否展示...
django admin 后台默认的样式可能不满足我们的需求,这个时候,我们就需要重写默认的样式。 我找到的有两种方法,其中一种(formfield_overrides)只能针对某种字段类型,不能指定字段。这里只介绍另一种,可以指定具体哪个字段。 这里只实现了提示信息,当然还可以设置输入框长度、宽度等。 1、使用前 2、使用后 3、实现代码 admin .py @ admin .register(models.WarnUser) class WarnUser Admin (adm
使用 Django 意味着后台框架的几乎所有内容都会和 Django 产生互动,排除功能全部手撸的情况. Django 后台 admin 有大量的属性和方法,拥有强大的功能和自定义能力.通过完整的代码来看 Django admin 的基础设置和高级用法,并结合form表单来实现深度自定义. 如果只是使用 admin 自带的数据管理功能,只需要将模型注册到 admin 中,就可以实现. from django .contrib impo
在上一篇对BaseForm的分析中,我只提及了在Form层次的输入验证,在Form.full_clean()主要调用的两个函数self._clean_field(), self._clean_form()。其中,self._clean_field方法代表了Field层次的输入验证。 在 Django 官方文档中,验证逻辑依次按照如下流程图: Created with Raphaël 2
参考书籍:《 Python 编程从入门到实践》—Eric Matthes ​ 如今我们的项目功能以及齐全,但是还未给它设置样式。在之后的内容中我们将设置样式,并将其部署到服务器上。 ​ 为了设置样式,我们将使用Bootstrap库,用来为Web应用程序设置样式。所以我i们需要使用应用程序 django -bootstrap3 ​ 我们还将把项目部署到Heroku上 应用程序 django -bootstrap...
Django x admin 常用field列表 class ModelForm Admin View(Model Admin View): form = forms.ModelForm formfield_overrides = {} readonly_fields = () style_fields = {} exclu...