admin的使用

admin的用处

随着项目的扩展,我们在项目中的表也越来越多,这时候在一条一条的录入数据就会很麻烦,怎么办? 这时候就是 admin 的用武之地了,它可以实现数据可视化的管理数据库中的表。

命令行下创建超级用户

首选创建一个新用户,用来登录Django管理网站,进入manage.py目录下,使用如下命令来进行创建:
>>python manage.py createsuperuser
接下来输入用户名称: 
>>Username(leave bkank to use 'administrator'): root
然后是输入邮箱(QQemail等都可以): 
>>Email address:(输入你的邮箱账号)
输入密码(输入密码时不会显示出来,并且长度必须超过八位才行): 
>>Password:
>>Password(again):
当两次密码输入相同且超过八位的时候,就会提示创建超级用户成功: 
>>Superuser created successfully.

再次运行你的服务,输入账号和密码就可以成功登陆了: 
>>python manage.py runserver

创建超级用户其实就是一个参数的配置

#   在 auth模块中    

#   在userinfo表中 改为 1
# -is_staff : 用户是否拥有网站的管理权限. # -is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。

 

admin的用法

1、我们需要现在settings中加入

#告诉django 我们要用自己的userinfo表了
AUTH_USER_MODEL = 'app01.UserInfo'

app01 为App名

Userinfo 为models下的userinfo表

2、在admin.py中注册表,才能在admin后台看到

from app01 import models

#注册表语法:
  #   admin.site.register ( models.xxxx )
   # xxxx  是models中创建的表

admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)

4、数据库表迁移:在Terminal 下:

#执行以下 两条命令  顺序不能错

python manage.py makemigrations

python manage.py migrate

#完成,你可以按照最上面的方式创建一个超级用户登录了

人性化设置

5、在此你会发现所有表都是英文显示,怎么改成中文呢?

详情链接:点我

#把这个类加到你models表中就行了,

class Meta:

      # admin中显示的表名称
      verbose_name='哈哈'    #这些这一个会显示成 " 哈哈s"

      # verbose_name去掉s     这样就是我们想要的 "哈哈"显示效果了  
      verbose_name_plural=verbose_name

4、当你进入表中添加数据的时候会发现字段名也全是英文,那可以改成中文吗? 这个也是可以改的

示例:

models中的Tag表中

class Tag(models.Model):
    nid = models.AutoField(primary_key=True,)

    #只需在name字段里加入 verbose_name= "你想要的中文名称"
    name = models.CharField(max_length=32,verbose_name="名称")
    blog = models.ForeignKey(to='Blog', to_field='nid',verbose_name="与博客表的关系")

5、如果你想关联表的关联字段显示 "名称" 而非 一个object对象,那么在被关联表中设置__str__如下示例。

示例:

# 关联表   
class Category(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    blog = models.ForeignKey(to='Blog', to_field='nid')   #显示Blog中的site_name字段名,而不是Blog对象
    
#被关联表
class
Blog(models.Model): nid = models.AutoField(primary_key=True) site_name = models.CharField(max_length=32) site_title = models.CharField(max_length=64) # 存css文件的路径 theme = models.CharField(max_length=32)
def __str__(self): #加入这个方法:

     return self.site_name #返回值自身的 site_name 字段, 对方想显示出这个字段

 

注意: null=True 只是数据库层面 允许字段为空,必须加上blank = Ture,不然会抛异常

# blank = True 解除admin对表为空的限制 
telephone = models.BigIntegerField(null=True,blank=True)

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-03-02 21:14  萤huo虫  阅读(527)  评论(0编辑  收藏  举报