搭建好环境后我们开始构建我们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,是否加入了自己项目依赖
Python--Django课程构建表
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'.

网上解决办法是把之前的表删除,然后新建:
Python--Django课程构建表
效果:
Python--Django课程构建表

Django后续我会持续更新…

相关文章: