2019独角兽企业重金招聘Python工程师标准>>>
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...