Django学习系列5:数据库设计,自定义userprofile

目录:

1.django app设计 
2.根据各个app设计models
3.数据表生成与修改:根据各个app的models直接生成数据表

本次学习项目:用户模块&课程模块&授课教师和授课机构模块:

1.设计user app的models:

新建app:run manager task-startapp users.

在设计user表之前,我们需要了解一下django本身给我们提供的user表有哪些字段。

id:主键
password:密码
last_login:django自动为我们记录用户最后登录的时间
is_superuser:是否超级用户
is_staff:是否是员工
is_active:用户是否是激活状态
date_joined:用户注册时间

我们本次项目中,user表不具备的字段:

昵称
生日
性别
区域
手机
邮箱

所以我们需要自定义user表,我们希望继承user表中原有的字段,但是又希望加入我们自己的字段,我们可以直接继承django的AbstractUser

# _*_ coding: utf-8 _*_
from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.


class UserProfile(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name=u"昵称",default="")
briday = models.DateField(verbose_name=u"生日", null=True, blank=True)
gender = models.CharField(max_length=10,choices=(("male",u"男"),("female",u"女")), default="female")
address = models.CharField(max_length=100,default=u"")
mobile = models.CharField(max_length=11,null=True, blank=True)
image = models.ImageField(upload_to="image/%Y/%m",default=u"image/default.png",max_length=100)

class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name

def __unicode__(self):
return self.username

在setting中注册apps:user,并重载一个setting的方法:AUTH_USER_MODEL = “users.UserProfile”

# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users'
]
AUTH_USER_MODEL = "users.UserProfile"

以上,用我们自定义的UserProfile去替换默认的users就完成了。

发表评论

邮箱地址不会被公开。