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 mysqldb连接数据库
Mar 16 Python
python中pycurl库的用法实例
Sep 30 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
基于tensorflow加载部分层的方法
Jul 26 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
简单了解python元组tuple相关原理
Dec 02 Python
django model通过字典更新数据实例
Apr 01 Python
Python3实现飞机大战游戏
Apr 24 Python
PyTorch 如何自动计算梯度
May 23 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
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
Element Dialog对话框的使用示例
2020/07/26 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python中unittest用法实例
2014/09/25 Python
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
使用python实现链表操作
2018/01/26 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python3多线程知识点总结
2019/09/26 Python
Python原始套接字编程实例解析
2020/01/29 Python
副总经理岗位职责
2014/03/16 职场文书
企业年度评优方案
2014/06/02 职场文书
七夕活动策划方案
2014/08/16 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers