重構Django自帶的User表 | Django


  從上一篇博可以看到一種使用django自帶user表所擁有的權限功能的一種方式:外鍵一對一關聯;

  這里介紹一種不使用auth_user表的方式:只要繼承User表的父類(AbstractUser)

1.構造模型類,繼承AbstractUser類

from django.contrib.auth.models import AbstractUser


class UserProfile(AbstractUser):
    nick_name = models.CharField(max_length=50, verbose_name="")
    birth = models.DateField(verbose_name="生日", null=True, blank=True)
    gender = models.CharField(
        max_length=6,
        choices=(
            ('male', ''),
            ('female', '')),
    )
    address = models.CharField(max_length=100, default="")
    mobile = models.CharField(max_length=11, null=True, blank=True)

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

    def __str__(self):
        return self.nick_name

2.在settings.py文件中指定剛創建的模型類

AUTH_USER_MODEL = "users.UserProfile"  # app+模型類

3.在遷移之前將原有表統統刪除(如果之前遷移過)

4.遷移出來的表同樣與權限表有關聯

需求:根據字段的字符串,獲取對象的該字段的數據?

措施:反射

>> from django.contrib.auth.models import User
>> user = User.objects.last()
>> getattr(user, "is_superuser") >> False

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM