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="")
    def __str__(self):
        return  self.article_classify

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

    class Meta:
        verbose_name = "文章列表"
        verbose_name_plural = ‘文章列表‘

adminx.py注册

class ControlArc(object):

    list_display = [‘title‘,‘body‘,‘auth‘]

class ControlArticleClassify(object):

    list_display = [‘article_classify‘]

xadmin.site.register(ArticleDetail,ControlArc)

执行数据库生成表并同步

python3 manage.py makemigrations
python3 manage.py migrate

浏览器显示:

二、未使用form_layout之后

使用form_layout重新布局,修改adminx.py内容

先从xadmin.layout导入需要用到的类:
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side, Field
各属性解释:
1. form_layout 里面传元组参数
2. Fieldse是设置一个块的标题名称,默认是第一个参数
3. Row是设置一行的显示内容,可以多个参数显示在一行4. 设置非必填字段,在models里面设置表字段的时候,加上参数: blank=True。也可以同时加上blank=True, null=True5. 也可以设置只读字段,加个readonly_fields=[‘aaa‘]6. 不显示某个字段,用exclude = [‘auth‘]7.上面的几个区块,按住鼠标后是可以上下拖动位置的,如果不让拖动可以加个参数:unsort是不允许拖动 no_title是不显示区块的title名称

models.py


from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side, Field
class MoreArc(object):

    list_display = [‘title‘,‘body‘,‘auth‘]

    readonly_fields = [‘detail‘]  # 只读

    form_layout = (

        Fieldset(u‘标题栏‘,
                 Row(‘title‘,‘auth‘),    # Row 表示将里面的字段作为一行显示
                 Row(‘classify‘),
                 css_class = ‘unsort‘            # 不让区块拖动
                 ),
        Fieldset(‘正文内容‘,     # Fieldset第一个参数表示区块名称
                 ‘body‘,
                 css_class = ‘unsort‘            # 不让区块拖动
                 ),
        Fieldset((‘备注‘),
                 Row(‘detail‘),
                 css_class = ‘unsort no_title‘            #  no_title是不显示区块的title名称
                 ),

    )
    # 不显示某字段
    exclude = [‘auth‘]

xadmin.site.register(ArticleDetail,MoreArc)

浏览器显示:

原文地址:https://www.cnblogs.com/chushujin/p/12607045.html

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

Django测试开发-29- xadmin模板中详情页面布局form_layout详解的相关文章

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 __st

【Android开发学习笔记之一】5大布局方式详解

Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(TableLayout):按照行列方式布局组件. 相对布局(RelativeLayout):相对其它组件的布局方式. 绝对布局(AbsoluteLayout):按照绝对坐标来布局组件. 1. 线性布局 线性布局是Android开发中最常见的一种布局方式,它是按照垂直或者水平方向来布局,通过“android:

smarty模板中获取页面参数

{$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间邮戳.直接访问PHP中的常量.从配置文件中读取变量等.该保留变量中的部分访问介绍如下. 1.在模板中访问页面请求变量 我们可以在PHP脚本中,通过超级全局数组$_GET.$_POST.$_REQUEST获取在客户端以不同方法提交给服务器的数据,也可以通过$_COOKIE或$_SESSION在多个脚本之间跟踪变量,或是通

SVN中tag branch trunk用法详解

SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag branch trunk都属于SVN的子命令,那么他们是如何使用的呢,本文就给大家一一讲解. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! 本节主要讲解一下SVN中tag branch trunk的用法,在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆.这里就向大

【转】SVN中trunk,branches,tags用法详解

SVN中trunk,branches,tags用法详解 Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修 改).但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯. 对于这几个开发目录,一般的使用方法有两

Android 中的 Service 全面总结详解【下】

上一篇文章Android 中的 Service 全面总结详解[下] 介绍了Service的一些知识以及本地Service的使用,如果对Service还不太了解的建议先看下上篇文章:本文主要接着上一篇讲下远程服务的使用: 在说到远程服务的时候,我们需要先了解一些预备的知识: 首先来了解一下AIDL机制: AIDL的作用 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象.在Android平台,一个进程通常不能访问另一个进程的内存空间,

C# Entity Framework中的IQueryable和IQueryProvider详解

前言 相信大家对 Entity Framework 一定不陌生,我相信其中Linq To Sql是其最大的亮点之一,但是我们一直使用到现在却不曾明白内部是如何实现的,今天我们就简单的介绍IQueryable和IQueryProvider. IQueryable接口 我们先聊聊这个接口,因为我们在使用EF中经常看到linq to sql语句的返回类型是 IQueryable ,我们可以看下这个接口的结构: 代码如下: public interface IQueryable : IEnumerabl

Android总结篇系列:Activity中几个主要函数详解

专注Android领域开发. 仰望星空,同时需要脚踏实地. ——好记性不如烂博客 Android总结篇系列:Activity中几个主要函数详解 Activity作为Android系统中四大基本组件之一,包含大量的与其他的各大组件.intent.widget以及系统各项服务等之间的交互的函数.在此,本文主要选取实际项目开发中常用的,但完全理解又需要有一定深入了解的几个函数进行讲解,后续本文会根据需要不断更新. 1. startActivityForResult / onActivityResult

Android Widget 开发实例:桌面便签程序的实现详解和源码

桌面便签软件是Android上常用软件的一种,比如比较早的Sticky Note,就曾非常流行,而实际上使用android平台对widget开发的支持,桌面便签类软件是非常易于开发的. 本文通过逐步实现一个简单的桌面便签软件,和大家分享进行widget开发的过程和方法. 同时本程序提供完整的工程源码下载 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /pub/Android源码集锦/2011年/10月/An