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操作ie登陆土豆网的方法
May 09 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
Python之re操作方法(详解)
Jun 14 Python
python中实现字符串翻转的方法
Jul 11 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
python hashlib加密实现代码
Oct 17 Python
python文件处理fileinput使用方法详解
Jan 02 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
Python常见反爬虫机制解决方案
Jun 01 Python
详解如何修改python中字典的键和值
Sep 29 Python
pycharm Tab键设置成4个空格的操作
Feb 26 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
星际中的相关伤害
2020/03/04 星际争霸
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php实现的短网址算法分享
2014/06/20 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
Javascript中的arguments与重载介绍
2015/03/15 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
JavaScript实现横版菜单栏
2020/03/17 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
python数组复制拷贝的实现方法
2015/06/09 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
老师自我鉴定范文
2013/12/25 职场文书
三项教育活动实施方案
2014/03/30 职场文书
师德师风建设方案
2014/05/08 职场文书
毕业实习感受与体会
2015/05/26 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
情况说明书格式及范文
2019/06/24 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书