重写用户模型

我们在设计models数据库的用户管理会用到各种各种字段,比如用户名,密码,用户登录状态等,这些字段如果自己来写的话相当麻烦,这时候可以用django系统自动生成的user表。

来看auth_user的表结构:

但是想要在django内建的User模型不一定适合你的需求。django允许你通过 AUTH_USER_MODEL 设置 覆盖User模型。

AUTH_USER_MODEL = "myapp.MyUser"

上面的值表示Django 应用的名称(必须位于 INSTALLED_APPS 中) 和你想使用的User 模型的名称。

改变 AUTH_USER_MODEL 对你的数据库结构有很大的影响。它改变了一些会使用到的表格,并且会影响到一些外键和多对多关系的构造。如果你打算设置 AUTH_USER_MODEL , 你应该在创建任何迁移或者第一次运行manage.py migrate 前设置它。

错误提示:

如果你在迁徙的过程中出现以下两种错误,那么恭喜你

错误一、

auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups‘ clashes

请检查是否在项目中配置

settings.py

AUTH_USER_MODEL = ‘myapp.MyUser‘

错误二、

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database ‘default‘

请将系统自动生成的auth_user表删除,这是因为Django中有一个原生的User模型类,admin的模型依赖这个模型类,由于前面一个应用中的模型类User继承了AbstractUser类。

但是在删除auth_user的时候你可能会遇到外键关联等问题导致auth_user不能删除的问题,那么请将系统自动生成的表全部删除。

(将所有表删除)

在后续的迁移过程中,这些表都会重新建立。

原文地址:https://www.cnblogs.com/welan/p/9356557.html

时间: 2024-08-30 07:13:27

重写用户模型的相关文章

Django 重写用户模型

目录 Django 重写用户模型 修改配置文件,覆盖默认的User模型 引用User模型 指定自定义的用户模型 Django 期望你自定义的 User model 满足一些最低要求: 下面为一些AbstractBaseUser的子类必须定义的关键的字段和方法: 下面为一些AbstractBaseUser的子类可以使用的方法: 为你的User模型自定义一个管理器 扩展Django默认的User 自定义用户与内置身份验证表单 自定义用户和django.contrib.admin 自定义用户和权限 如

django重写用户模型

重写一个UserProfile继承自带的AbstractUser # -*- coding: utf-8 -*- from __future__ import unicode_literals from datetime import datetime from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfi

oneThink用户模型

1. User\Model\UcenterMemberModel.class.php 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------

Ruby on Rails Tutorial 第六章 用户模型

1.用户模型(1)数据库迁移Rails默认使用关系数据库存储数据,数据库中的表有数据行组成,每一行都有相应的列,对应数据属性.把列名命名为相应的名字后,ActiveRecord会自动把他们识别为用户对象的属性. $ rails generate controller Users new #生成用户控制器和new动作,控制器名是复述Users $ rails generate model User name:string email:string #生成用户模型,模型名是单数User $ bund

Django:创建用户模型报错: (admin.E108) The value of &#39;list_display[4]&#39;解决方案

参考资料:虫师-<web接口开发与自动化测试:基于python语言> 日常学习Django框架中,创建了用户模型,但是页面功能验证时候,提示不能进行列表字段操作,debug好久,才找到问题原因,心累... 下面是大概过程和解决方案... models.py文件代码: 1 from django.db import models 2 3 # Create your models here. 4 # 发布会表 5 class Event(models.Model): 6 name = models

【Python-Django定义用户模型类】Python-Django定义用户模型类详解!!!

定义用户模型类 1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架的核心和默认的模型. django.contrib.contenttypes是Django内容类型系统,它允许权限与你创建的模型关联. Django认证系统同时处理认证和授权 认证:验证一个用户是否它声称的那个人,可用于账号登录. 授权:授权决定一个通过了认证的用户被允许做什么. D

18_django的用户模型和扩展django的用户模型

目录 User 模型 字段: User模型的基本用法 User 模型 User模型是这个框架的核心部分.他的完整的路径是在django.contrib.auth.models.User.以下对这个User模型做一个简单的了解: 字段: 内置的User模型拥有以下的字段: 1. username: 用户名.150个字符以内.可以包含数字和英文字符,以及_/@/+/.和-字符.不能为空,且必须唯一. 2. email: 邮箱. 可以为空. 3. password: 密码.经过哈希过后的密码. 4.

23-自定义用户模型

一.自定义用户模型 Django比较好的地方就是自带用户系统,但在某些情况之下,自带的用户系统并不适合我们所创建的项目(我们可能删除某些字段,也有可能新增某些字段,或者哪些字段的信息修改必填还是允许为空),这个时候我们需要自定义用户模型.做法就是继承BaseUserManager或者继承AbstractBaseUser,然后到项目settings.py文件中指定的AUTH_USER_MODEL的用户模型类. 继承AbstractBaseUser: from datetime import dat

连接mysql数据库,创建用户模型

from flask import Flask from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer,primary_key=True,autoincrem