我知道 super 用户和普通用户都只是 django 的用户对象,但我如何编写一个自定义用户类,它需要普通用户的一些字段,而不需要 super 用户的那些字段?
请您参考如下方法:
数据库中没有任何结构是棘手的。例如,随着应用程序的增长,JSONFields 可能会被证明极其难以驯服。
我会尝试让它变得“简单”——更易于维护(我想如果你需要做那样的事情,你可能希望在未来扩展模型)。如果这是一个新项目,您可以轻松地 change the default user model .但这可能会或可能不会帮助您处理您的案件。
你总是可以制作两个模型:
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
class Mortal(AbstractBaseUser):
is_superuser = False
username = models.CharField(max_length=256)
first_name = models.CharField(max_length=256)
last_name = models.CharField(max_length=256)
class Admin(AbstractBaseUser):
is_superuser = True
username = models.CharField(max_length=256)
然后 make your own authentication backend :
class MyBackend(object):
"""
Danger! A backend to authenticate only via username
"""
def authenticate(self, username=None):
try:
return Mortal.objects.get(username=username)
except Mortal.DoesNotExist:
try:
return Admin.objects.get(username=username)
except Admin.DoesNotExist:
return None
