python测试开发django-39.页面布局form_layout
时间:2022-06-20
本文章向大家介绍python测试开发django-39.页面布局form_layout,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
xadmin的详情页面默认是一行展示一个字段,可以使用form_layout对详情页面的布局重新设计。 可以设置必填和非必填字段,也可以设置不显示,不可以编辑的字段。
models模块
先在models.py建2张表
class ArticleClassify(models.Model):
'''文章分类'''
n = models.CharField(max_length=30, verbose_name="分类", default="")
def __str__(self):
return self.__doc__ + "->" + self.nclass Meta:
verbose_name = "文章分类"
verbose_name_plural = verbose_nameclass ArticleDetail(models.Model):
'''文章'''
title = models.CharField(max_length=30, verbose_name="标题", default="输入你的标题") # 标题
classify = models.ForeignKey(ArticleClassify,
on_delete=models.CASCADE,
related_name="classify_name",
verbose_name="文章分类",
)body = models.TextField(verbose_name="正文", default="输入正文") # 正文
auth = models.CharField(max_length=10, verbose_name="作者", default="admin") # 作者detail = models.TextField(verbose_name="备注", default="添加备注")# 创建时间
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
# 最后更新时间
update_time = models.DateTimeField(auto_now=True, verbose_name="最后更新时间")def __str__(self):
return self.__doc__ + "title->" + self.titleclass Meta:
verbose_name = "文章列表"
verbose_name_plural = '文章列表'
adminx.py注册表信息
class ControlActicl(object):
list_display = ['title', 'body', 'auth']xadmin.site.register(ArticleDetail, ControlActicl)
之后执行 makemigrations 和migrate,同步数据
python manage.py makemigrations python manage.py migrate
xadmin页面优化
打开xadmin后台编辑页面,默认显示如下
使用form_layout重新布局,修改adminx.py注册表内容
- 先从xadmin.layout导入需要用到的类如:Fieldset,Row
- form_layout 里面传元组参数
- Fieldse是设置一个块的标题名称,默认是第一个参数
- Row是设置一行的显示内容,可以多个参数显示在一行
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side, Fieldclass MoreActicl(object):
list_display = ['title', 'body', 'auth']
form_layout = (
Fieldset(u'',
Row('title', 'auth'), # Row 表示将里面的字段作为一行显示
Row('classify'),
),
Fieldset(('正文内容'), #Fieldset第一个参数表示区块名称
'body',
),
Fieldset(('备注'),
Row('detail'),
),
)
显示效果如下
添加默认输入值
也可以给编辑页面设置默认参数,在models里面设置表字段的时候,加上参数default=”输入框内默认输入的参数”
设置非必填
如何想设置非必填字段,在models里面设置表字段的时候,加上参数: blank=True。也可以同时加上blank=True, null=True
auth = models.CharField(max_length=10,
verbose_name="作者",
default="admin",
blank=True, null=True) # 作者
这样auth参数就是非必填的了,前面没红色*号了
设置只读字段
也可以设置只读字段,加个readonly_fields=[‘xxx’]
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side, Field
class MoreActicl(object):
list_display = ['title', 'body', 'auth']readonly_fields = ['detail'] # 只读字段form_layout = (
Fieldset(u'',
Row('title', 'auth'), # Row 表示将里面的字段作为一行显示
Row('classify'),
),Fieldset(('正文内容'), #Fieldset第一个参数表示区块名称
'body',
),Fieldset(('备注'),
Row('detail'),
),
)xadmin.site.register(ArticleDetail, MoreActicl)
隐藏字段
不显示某个字段,可以用exclude = [‘auth’]
class MoreActicl(object):
list_display = ['title', 'body', 'auth']readonly_fields = ['detail'] # 只读字段exclude = ['auth'] # 不显示某个字段
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- phpinfo无法显示的原因及解决办法
- 在php的yii2框架中整合hbase库的方法
- PHP安装memcache扩展的步骤讲解
- python退出循环的方法
- PHP crypt()函数的用法讲解
- Python如何自动获取目标网站最新通知
- PHP+mysql实现的三级联动菜单功能示例
- Python调用shell cmd方法代码示例解析
- 实例讲解PHP表单处理
- 用python实现名片管理系统
- keras 简单 lstm实例(基于one-hot编码)
- keras用auc做metrics以及早停实例
- Laravel中错误与异常处理的用法示例
- Laravel用户授权系统的使用方法示例
- Yii2结合Workerman的websocket示例详解