python测试开发django-39.xadmin详情页面布局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.n

    class Meta:
        verbose_name = "文章分类"
        verbose_name_plural = verbose_name

class 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.title

    class 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, Field

class 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']    # 不显示某个字段

原文地址:https://www.cnblogs.com/yoyoketang/p/10601833.html

时间: 2024-11-08 16:59:59

python测试开发django-39.xadmin详情页面布局form_layout的相关文章

Django测试开发-29- xadmin模板中详情页面布局form_layout详解

现状: xadmin的详情页面默认是一行展示一个字段 使用form_layout: 1. 可以设置必填和非必填字段 2. 可以设置显示不显示字段, 3. 可以设置不可以编辑的字段 一.未使用form_layout之前 models.py class ArticleClassify(models.Model): '''文章分类''' article_classify = models.CharField(max_length=30, verbose_name="分类", default=

python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布局用到的是django-crispy-forms框架,本篇详细讲下django-crispy-forms的官方文档案例 django-crispy-forms 当我们使用xadmin后台的时候,在INSTALLED_APPS里面同时添加了xadmin和crispy_forms这2个app,xadmi

python测试开发django-16.JsonResponse返回中文编码问题

前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面的User表,测试数据如下 user_name psw mail yoyo 123456 [email protected] yoyo2 111111 1 yoyo5 111111 0 接着上一篇[python测试开发django-15.查询结果转json(serializers)],如果数据库里面

Python测试开发-创建模态框及保存数据

Python测试开发-创建模态框及保存数据 原创: fin  测试开发社区  前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎么实现这种弹出效果,bootstrap已经为我们提供了相应的组件. 1.界面原型 点击添加,弹出模态框, 然后输入 用户:tester, 消息:你好.如下图1所示: ▲图1 再点击保存,那么数据库就存入了以上输入的数据,查看界面的用户列表会显示tester,如下图2所示: ▲图2 2.开发过程 接下

2019第一期《python测试开发》课程,10月13号开学

2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20:30-22:30 报名费:报名费2000一人(周期2个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.httprunner框架以及web平台做接口自动化测试 (装逼必备) 2.django平台开发 (python开发必会) 3.pytest框架结合selenium做web自动化测试 (

python测试开发之_字符串练习

编程学习是个漫长.逐渐累加复杂度.综合难度的一门工程.需要自我驱动,督促自己往前走.Python测试开发是本年度重点学习目标. 今天来一个字符串的练习题,重在思路,不断训练自己的思维. 题目:找出字符串中出现次数最多的字符,并输出其出现的位置 代码实现: #encoding=UTF-8 s = "aaabbbhhiijk" letter_count_dict={} for i in s: if letter_count_dict.has_key(i): #判断是否在字典中出现过 let

python测试开发django-47.xadmin上传图片和文件

前言 xadmin上传图片和上传文件功能 models模块设计 先设计一个model,用ImageField存放图片,FileField放文件,upload_to参数是存放的目录 # models.py from django.db import models from django.utils import timezone # Create your models here. class FileImage(models.Model): '''上传文件和图片''' title = model

python测试开发django-40.模型(model)中choices使用

前言 之前一直在想页面上如果一个字段只有固定的几个选项,类似select下拉框这种,如果在表里面设置一个外键的话,是不是有点傻了,这样为了几个选项弄一张表不值得. 后来看到Django模型中的字段有个choices属性,在设计模型的时候,只需把字段参数加个choices即可,看样子是我想多了~ choices参数 如果一个字段设置了choices属性,在模版中如果我要显示这个字段,比如用户的性别,只需设置2个参数选项. 在django模版系统就会将它默认解析为一个下拉菜单,这样对于一个静态的下拉

python测试开发django-60.使用token登录(TokenAuthentication)

前言 现在很多接口项目在登录的时候返回一个token,登录后的拿着这个token去访问访问登录之后的请求. 本篇使用djangorestframework框架写一个登陆的接口,登录成功后返回token. 环境准备: python 3.6 django 2.1.2 TokenAuthentication django rest framework权限和认证有四种方式: BasicAuthentication 此身份验证方案使用HTTP基本身份验证,根据用户的用户名和密码进行签名.基本身份验证通常仅