python測試開發django-39.xadmin詳情頁面佈局form_layout

前言

xadmin的詳情頁面默認是一行展現一個字段,能夠使用form_layout對詳情頁面的佈局從新設計。
能夠設置必填和非必填字段,也能夠設置不顯示,不能夠編輯的字段。php

models模塊

先在models.py建2張表css

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註冊表信息python

class ControlActicl(object): list_display = ['title', 'body', 'auth'] xadmin.site.register(ArticleDetail, ControlActicl)

以後執行 makemigrations 和migrate,同步數據ide

python manage.py makemigrations
python manage.py migrate佈局

xadmin頁面優化

打開xadmin後臺編輯頁面,默認顯示以下優化

使用form_layout從新佈局,修改adminx.py註冊表內容spa

  • 先從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="輸入框內默認輸入的參數"3d

設置非必填

如何想設置非必填字段,在models裏面設置表字段的時候,加上參數: blank=True。也能夠同時加上blank=True, null=Truecode

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'] # 不顯示某個字段

區塊不能夠拖動

上面的幾個區塊,按住鼠標後是能夠上下拖動位置的,如何不讓拖動能夠加個餐:css_class = 'unsort no_title'

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名稱 ), )

unsort是不容許拖動 no_title是不顯示區塊的title名稱

相關文章
相關標籤/搜索