您好,登錄后才能下訂單哦!
1、將添加blog的后臺基本操作
在blog文件夾下新建一個admin.py文件加入一下代碼:
from django.contrib import admin from djcms.apps.blog.models import Post, Category, Tag admin.site.register(Post) admin.site.register(Category) admin.site.register(Tag)
重啟服務,再到瀏覽器上登錄到后臺,是不是增加了對blog的基本操作,不僅比較完善、界面整潔優雅,而且很多都可以自定義,是不是很酷!后續再慢慢研究。
2、漢化表單、完善表單
目前位置,后臺的表單前面的標簽label基本上都是默認的字段名字,各種表單也是初始的狀態,下面我們簡單做些修改。修改后的模型代碼如下:
# coding:utf8 from django.db import models class Category(models.Model): """ 文章分類 """ title = models.CharField('名稱', max_length=100) # 分類名稱 alias = models.CharField('別名', max_length=100) # 分類別名(用于 url 優化) sort = models.SmallIntegerField('排序') # 排序 class Meta: verbose_name = '分類' verbose_name_plural = '分類' ordering = ['sort'] def __unicode__(self): return self.title class Tag(models.Model): """ 文章標簽 """ tagname = models.CharField('標簽名', max_length=60) # 標簽名 post_ids = models.TextField(editable=False) # 對應的文章 id 集合的序列 class Meta: verbose_name = '標簽' verbose_name_plural = '標簽' def __unicode__(self): return self.tagname class Post(models.Model): """ 博客文章 """ # 文章發布狀態 CONTENT_STATUS_PUBLISHED = 1 # 文章草稿箱狀態 CONTENT_STATUS_DRAFT = 2 # 文章狀態選項 CONTENT_STATUS_CHOICES = ( (CONTENT_STATUS_PUBLISHED, '發布'), (CONTENT_STATUS_DRAFT, '草稿箱'), ) title = models.CharField('標題', max_length=100) # 標題 content = models.TextField('文章內容') # 內容 excerpt = models.TextField('摘要') # 摘要 publish_date = models.DateTimeField('發表時間') # 發表時間 status = models.IntegerField('狀態', choices=CONTENT_STATUS_CHOICES, default=CONTENT_STATUS_PUBLISHED) # 狀態:1為正式發布,2為草稿箱 comments_count = models.IntegerField(default=0, editable=False) # 評論總數 view_count = models.IntegerField(default=0, editable=False) # 瀏覽總數 alias = models.CharField('別名', max_length=100, blank=True) # 別名(用于 url 優化) keywords = models.CharField('關鍵字', max_length=500, blank=True) # 關鍵字 description = models.TextField('描述', blank=True) # 描述 user = models.ForeignKey("auth.User", verbose_name = '作者', related_name="%(class)ss") # 作者 categories = models.ManyToManyField(Category, blank=True, verbose_name = '分類', related_name="posts") # 分類 class Meta: verbose_name = '文章' verbose_name_plural = '文章' ordering = ['publish_date'] def __unicode__(self): return self.title
其中將文章狀態選項CONTENT_STATUS_CHOICES 寫在Post類中更加合理,而Meta中的verbose_name表示單數形式的顯示,verbose_name_plural表示復數形式的顯示,因為中文的單數和復數一般不作區別,如果是英文一般默認會的復數是加上了s
進一步完善文章的列表顯示和表單,在blog下面的admin.py文件中加入PostAdmin類:
class PostAdmin(admin.ModelAdmin): list_display = ('title', 'publish_date', 'user', 'status') # 列表顯示的字段 search_fields = ('title',) # 列表包含根據指定字段搜索 list_filter = ('publish_date',) # 右側過濾選項 # 分組表單 fieldsets = ( ('基本信息', {'fields': ('title', 'content', 'excerpt', 'publish_date','status', 'user', 'categories')}), ('Meta Data', {'fields': ('alias', 'keywords', 'description')}), )
注意,有3種類型的域不能按如上方式添加自定義名稱:ManyToManyField,OneToOneField,ForeignKey。而應該顯示指定:
class Film(models.Model): title = models.CharField('片名', max_length=100) actors = models.ManyToManyField(Actor,verbose_name='演員') pub_date = models.DateField('發行日期') publisher = models.ForeignKey(Publisher,verbose_name='發行商')
如果想修改通過admin自動生成的后臺管理標題 請用國際化處理, 如果改變布局可以重寫admin的頁面
以上這篇Django admin model 漢化顯示文字的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。