多平台统一管理软件接口,如何实现多平台统一管理软件接口
308
2022-08-31
Django(part31)--admin后台数据库管理(django admin开发)
学习笔记,仅供参考
文章目录
admin后台数据库管理
使用步骤自定义后台管理数据表
配置步骤
模型管理器类
模型管理器的使用方法ModelAdmin模型管理器类中的高级管理功能
数据库表管理
修改模型类字段的显示名字通过Meta内嵌类定义模型类的属性及展现形式
admin后台数据库管理
django 提供了后台管理数据库的接口admin,我们可以在开发的测试阶段使用。django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用。
在开发阶段,我们使用admin后台数据库管理界面进行调试将非常的方便。
使用步骤
第一步:创建后台管理账号
创建管理员帐号,并根据提示完成注册:
F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_db>python manage.py createsuperuserUsername (leave blank to use 'goatbishop'): darkgoatEmail address: goatbishop@gmail.comPassword:Password (again):Superuser created successfully.
我们需要在Username处输入用户名,在Email address处输入邮箱,在Password处输入密码(密码要复杂些,否则会提示密码太简单),在**Password (again)**处再次输入相同的密码(Django为了防止我们第一遍时输入错误)
第二步:开启服务器
python manage.py runserver
用注册的帐号登陆后台管理界面
后台管理的登录地址:select id,username,email from auth_user;+----+----------+----------------------+| id | username | email |+----+----------+----------------------+| 1 | darkgoat | goatbishop@gmail.com |+----+----------+----------------------+1 row in set (0.00 sec)
我们点开darkgoat,填入姓和名:
mysql> select username, first_name, last_name from auth_user;+----------+------------+-----------+| username | first_name | last_name |+----------+------------+-----------+| darkgoat | 扬 | 桂 |+----------+------------+-----------+1 row in set (0.00 sec)
更改成功!
自定义后台管理数据表
若想要自己定义的模型类也能在 /admin 后台管理界中显示和管理,需要将自己的类注册到后台管理界面,添加自己定义模型类的后台管理数据表的,需要用admin.site.register(自定义模型类) 方法进行注册
配置步骤
在应用app中的admin.py中导入注册要管理的模型models类
我们打开bookstore应用的admin.py,导入模型类:
from . import models
调用admin.site.register 方法进行注册
from django.contrib import adminadmin.site.register(models.Book)#admin.site.register(自定义模型类)
现在,我们回到object(#),而不像Books界面中显示的那么直观,利于我们进行后续的判断,这是因为我们在Book模型类中对__str__方法进行了重写,现在,我们也对Author模型类的__str__方法进行重写。
models.py
class Author(models.Model): name = models.CharField("姓名", max_length = 30, null = False, unique = True, db_index = True) age = models.IntegerField("年龄, ", null = False, default = 1) email = models.EmailField("邮箱", null = True) def __str__(self): string = "姓名:{}, 年龄:{}".format(self.name, self.age) return string
记得更改过models.py文件后要进行迁移操作。
我们再刷新一下界面:
very well
模型管理器类
模型管理器类可以用后台管理界面添加新功能。后台管理器类须继承自 django.contrib.admin 里的 ModelAdmin 类
模型管理器的使用方法
在<应用app>/admin.py 里定义模型管理器类
class XXXX_Manager(admin.ModelAdmin): ......
在<应用app>/admin.py 里注册管理器类与模型类关联
from django.contrib import adminfrom . import modelsadmin.site.register(models.YYYY, XXXX_Manager)#注册管理器类与模型类关联#models.YYYY是模型类#管XXXX_Manager是管理器类
ModelAdmin模型管理器类中的高级管理功能
类成员 | 功能 |
list_display | 控制哪些字段会显示在Admin的修改列表页面中 |
list_display_links | 控制list_display中的字段是否应该链接到对象的“更改”页面 |
list_filter | 设置激活Admin修改列表页面右侧栏中的过滤器 |
search_fields | 设置启用Admin更改列表页面上的搜索框 |
list_editable | 设置在更改列表页面上对某字段直接进行编辑修改 |
其它参见django.contrib import adminfrom . import models# Register your models here.class Book_Manager(admin.ModelAdmin): list_display = ['title', 'pub','exfacPrice', 'price'] list_filter = ['pub']admin.site.register(models.Author)admin.site.register(models.Book, Book_Manager)
向Book更改列表页面Book(models.Model): title = models.CharField("书名", max_length = 30) pub = models.CharField("出版社名", max_length = 50,null = True) exfacPrice = models.DecimalField("出厂价", max_digits = 6, decimal_places = 2, default = 0) price = models.DecimalField("售价", max_digits = 6, decimal_places = 2, default = 0) def __str__(self): string = "书名:%s, 出版社:%s" % (self.title, self.pub) return string
我们查看一下后台数据库管理页面:
通过Meta内嵌类定义模型类的属性及展现形式
在模型类中,可以通过定义内部类class Meta的方式,来重新定义当前模型类和数据表的一些属性信息。
用法
class Book(models.Model): title = CharField(....) class Meta: 1. db_table = '数据表名' - 该模型所用的数据表的名称。(设置完成后需要立马更新同步数据库) 2. verbose_name = '单数名' - 该模型对象的一个易于理解的名称(单数),用于显示在/admin管理界面中 3. verbose_name_plural = '复数名' - 该对象复数形式的名称(复数),用于显示在/admin管理界面中
举个例子
我们在models.py中新增一个Publisher模型类,并定义Meta内部类:
class Publisher(models.Model): pub = models.CharField("出版社名", max_length = 50,null = True) booknumber = models.PositiveIntegerField("初版书籍总量", default = 0) tele = models.CharField("联系电话", max_length = 11, null = False) class Meta: db_table = "china_publisher" verbose_name = "ChinaPublisher" verbose_name_plural = "ChinaPublishers"
在Django shell中给china_publisher数据表添加一些数据:
In [2]: from bookstore import modelsIn [3]: models.Publisher.objects.create(pub="人民邮电出版社", tele="81055364")Out[3]:
打开admin数据库管理界面:
点开ChinaPublishers:
查看mywebdb数据库中的数据表们:
mysql> show tables;+----------------------------+| Tables_in_mywebdb |+----------------------------+| auth_group || auth_group_permissions || auth_permission || auth_user || auth_user_groups || auth_user_user_permissions || bookstore_author || bookstore_book || china_publisher || django_admin_log || django_content_type || django_migrations || django_session |+----------------------------+13 rows in set (0.00 sec)
可以看到,Publisher模型类创建的数据表名字为china_publisher。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~