用户表主要控制3张表python
# 修改auth模块的用户表指向 AUTH_USER_MODEL = 'api.User'
# 重点: # 1)auth认证6表必须在第一次数据库迁移前肯定,第一次数据库迁移完成 # 2)完成数据库迁移,出现了auth的用户表迁移异常,须要删除的数据库迁移文件 # User表所在的自定义应用下的、admin组件下的、auth组件下的
from django.db import models # Create your models here. from django.contrib.auth.models import AbstractUser class User(AbstractUser): mobile = models.CharField(max_length=11, unique=True) class Meta: db_table = 'od_user' # 从新给表命名 verbose_name = '用户表' # 后台登录显示表名 verbose_name_plural = verbose_name def __str__(self): # 用一个字段来表示一个表 return self.username
理解参照下表django
content_type 主要是和permission提供做用,是django创建的表api
# 给Django中的全部模块中的全部表进行编号存储到content_type表中 # 应用一:权限表的权限是操做表的,全部在权限表中有一个content_type表的外键,标识该权限具体操做的是哪张表 # 应用二:价格策略 """ Course: name、type、days、price、vip_type 基础 免费课 7 0 中级 学位课 180 69 究极 会员课 360 至尊会员 Course: name、type、days、content_type_id 基础 免费课 7 null 中级 学位课 180 1 究极 会员课 360 2 app01_course_1 id、price app01_course_2 id vip_type content_type表(Django提供) id、app_label、model 1 app01 course_1 2 app01 course_2 """
在admin.py文件夹中进行注册,在后台能够显示app
from django.contrib import admin # Register your models here. from . import models admin.site.register(models.User)#注册user表
若是不重写的话,在添加用户的时候不能直接添加,由于密码是明文的,因此在后台添加的时候,须要进行重写ide
from django.contrib.auth.admin import UserAdmin
函数
在后台全部的展现和输入均可以由这个模块进行控制3d
能够本身控制重写的内容code
主要是重写里里面的属性blog
from django.contrib import admin from . import models # admin注册自定义User表:密文操做密码 from django.contrib.auth.admin import UserAdmin as AuthUserAdmin class UserAdmin(AuthUserAdmin): add_fieldsets = ( (None, { 'classes': ('wide',), # 添加用户界面可操做的字段 'fields': ('username', 'password1', 'password2', 'mobile', 'email', 'is_staff', 'is_active'), }), ) list_display = ('username', 'mobile', 'email', 'is_staff', 'is_active') # 明文操做密码,admin可视化添加的用户密码都是明文,登陆时用的是密文,因此用户没法登陆 # admin.site.register(models.User) admin.site.register(models.User, UserAdmin)
class ArticleConfig(admin.ModelAdmin): list_display = ['title','create_time'] # 配置展现字段 list_display_links = ['title','create_time'] # 指定多个跳转标签 search_fields = ['title'] # 指定查询 多个字段默认是or的关系 def patch_init(self,queryset): pass patch_init.short_description = '批量更新' actions = [patch_init,] # 自定义批量处理函数 list_filter = ['tags','category'] # 定义外键字段的过滤