我想创建一个用作 ForeignKey 的用户,但我不希望这些用户可以登录系统。我不知道如何继续。 (关于设置 set_unusable_password() 或 None 以及如何执行它):
我的accounts.py文件如下
class User(AbstractBaseUser):
GENDER = (("MALE", "Male"), ("FEMALE", "Female"))
user_type = models.CharField(max_length=50, choices=Types.choices, default=Types.PATIENT)
full_name = models.CharField(max_length=255, blank=True, null=True)
phone = models.CharField(max_length=255, unique=True)
email = models.CharField(max_length=255, blank=True, null=True, unique=True)
active = models.BooleanField(default=False)
gender = models.CharField(max_length=15, choices=GENDER)
admin = models.BooleanField(default=False)
staff = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
USERNAME_FIELD = "phone" # username
REQUIRED_FIELDS = []
objects = UserManager()
先谢谢各位。 <3
答案 0 :(得分:2)
您可以使用用户记录的 is_active 字段
<块引用>is_active 布尔值。指定此用户帐户是否应 认为是活跃的。我们建议您将此标志设置为 False 而不是删除帐户;这样,如果您的应用程序有任何 外键给用户,外键不会坏。
答案 1 :(得分:1)
在视图中,您还应该检查用户是否处于活动状态。 例如:
def user_login(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
user = authenticate(username = username,password = password)
if user is not None and user.active:
login(request,user)
由于您已经覆盖了您的用户模型并从 is_active 更改了活动字段。如果活动字段为 False 那么它将不允许用户登录,如果用户处于活动状态,它将允许用户登录。