Django admin model 汉化显示文字的实现方法


Posted in Python onAugust 12, 2019

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 汉化显示文字的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用SAX解析xml实例
Nov 21 Python
Python、Javascript中的闭包比较
Feb 04 Python
python实现上传下载文件功能
Nov 19 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
Python 硬币兑换问题
Jul 29 Python
python设置随机种子实例讲解
Sep 12 Python
wxPython实现整点报时
Nov 18 Python
基于matplotlib xticks用法详解
Apr 16 Python
Python简易版图书管理系统
Aug 12 #Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 #Python
python中eval与int的区别浅析
Aug 11 #Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 #Python
python多线程同步实例教程
Aug 11 #Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 #Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 #Python
You might like
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
js表格分页实现代码
2009/09/18 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
js计算精度问题小结
2013/04/22 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
《Python学习手册》学习总结
2018/01/17 Python
Python扩展内置类型详解
2018/03/26 Python
python队列queue模块详解
2018/04/27 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
档案检查欢迎词
2014/01/13 职场文书
12岁生日演讲稿
2014/05/14 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
刘胡兰观后感
2015/06/16 职场文书
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers