搭建好环境后我们开始构建我们user表:
1.引入我们的Django ,user默认函数:
```
from django.contrib.auth.models import AbstractUser
```
2.设置表的字段,定义不同字段含义,比如 性别,年龄,昵称等:
class UserInfo(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default="")
birthday = models.DateField(verbose_name=u"生日", null=True, blank=True)
sex = models.CharField(max_length=5, choices=(("nan", u"男"), ("nv", u"女")), default="nan")
address = models.CharField(max_length=50, default="")
mobile = models.CharField(max_length=11, null=True, blank=True)
img = models.ImageField(max_length=100, upload_to="img/%Y/%X", default="")
注意的是,img图片 ImageField需要安装pillow库,pip install pillow
3.构建Meta信息,和重新unicode编码,要不然无法不能打印自定义的字符串
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def __unicode__(self):
print(self.username)
return self.username
完整代码:
# _*_ encoding:utf-8 _*_
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserInfo(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default="")
birthday = models.DateField(verbose_name=u"生日", null=True, blank=True)
sex = models.CharField(max_length=5, choices=(("nan", u"男"), ("nv", u"女")), default="nan")
address = models.CharField(max_length=50, default="")
mobile = models.CharField(max_length=11, null=True, blank=True)
img = models.ImageField(max_length=100, upload_to="img/%Y/%X", default="")
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def __unicode__(self):
print(self.username)
return self.username
4.检查项目settings.py,是否加入了自己项目依赖
5.settings.py,初始化AUTH_USER_MODEL,自定义用户数据库模型,项目名字加我们自定义模型类UserInfo
AUTH_USER_MODEL = 'mxteaching_app.UserInfo'
运行的时候报错manage.py 时候报错:
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency mxteaching_app.0001_initial on database 'default'.
网上解决办法是把之前的表删除,然后新建:
效果:
Django后续我会持续更新…