django自定义用户表

 

django中已经给我生成默认的User表,其中的字段已经可以满足我们的日常需求。

但有时候,我们需要更多的字段,我们就可以自定义。来替换django自带的User表。

#models.py

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
    nick_name = models.CharField(max_length=50, verbose_name=u'昵称')
    birthday = 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=11, verbose_name=u'地址', null=True, blank=True)
    image = models.ImageField(upload_to='image/%Y/%m', default=u"image/default.png", max_length=100)
    phone = models.CharField(max_length=11, verbose_name=u"手机号码", null=True, blank=True)
    # image依赖Pillow

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

    def __unicode__(self):
        return self.username

#adminx.py

from xadmin.plugins.auth import UserAdmin


class UserProfileAdmin(UserAdmin):
    pass

#settings.py

INSTALLED_APPS = [
    ...
    'users',
    ....
]

AUTH_USER_MODEL="users.UserProfile"

然后就可以makemigrations,migrate

然后就可以创建超级用户。如果之前创建过,会被删除,需要重新创建。

对于已扩展的数据库,python manage.py inspectdb > cosmos/models.py反向生成数据库模型之后,删除多余的django auth表,保留User表扩展的部分,用python manage.py makemigrations cosmos同步数据库,否则会产生ValueError: Dependency on app with no magrations: cosmos错误。

django中已经给我生成默认的User表,其中的字段已经可以满足我们的日常需求。

但有时候,我们需要更多的字段,我们就可以自定义。来替换django自带的User表。

#models.py

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
    nick_name = models.CharField(max_length=50, verbose_name=u'昵称')
    birthday = 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=11, verbose_name=u'地址', null=True, blank=True)
    image = models.ImageField(upload_to='image/%Y/%m', default=u"image/default.png", max_length=100)
    phone = models.CharField(max_length=11, verbose_name=u"手机号码", null=True, blank=True)
    # image依赖Pillow

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

    def __unicode__(self):
        return self.username

#adminx.py

from xadmin.plugins.auth import UserAdmin


class UserProfileAdmin(UserAdmin):
    pass

#settings.py

INSTALLED_APPS = [
    ...
    'users',
    ....
]

AUTH_USER_MODEL="users.UserProfile"

然后就可以makemigrations,migrate

然后就可以创建超级用户。如果之前创建过,会被删除,需要重新创建。

对于已扩展的数据库,python manage.py inspectdb > cosmos/models.py反向生成数据库模型之后,删除多余的django auth表,保留User表扩展的部分,用python manage.py makemigrations cosmos同步数据库,否则会产生ValueError: Dependency on app with no magrations: cosmos错误。

猜你喜欢

转载自www.cnblogs.com/129TL/p/9910925.html
今日推荐