gpt4 book ai didi

python - Django 1.11 自定义用户模型与组

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:00 25 4
gpt4 key购买 nike

我正在尝试在我的用户(AbstractBaseUser)模型和内置组模型之间添加外键。我现在的问题是我无法创建 super 用户,因为它需要用“某物”填充组字段。

我通过 shell 创建了一个组,名为 admin,id 为 1。但是,我找不到创建 super 用户并在创建时将组设置为 admin 的方法。

这是我的/accounts 应用程序中的 models.py:

from django.db import models
from django.forms import ModelForm
from django.contrib.auth.models import (
BaseUserManager,
AbstractBaseUser,
Group
)

class UserManager(BaseUserManager):
def create_user(self, email, group, password=None):
if not email:
raise ValueError('Users must have an email address')

user = self.model(
email = UserManager.normalize_email(email),
password = password,
group = group
)
user.set_password(password)
user.save()
return user

def create_superuser(self, email, group, password):
user = self.create_user(
email = UserManager.normalize_email(email),
group = group
)

user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save()
return user


class User(AbstractBaseUser):
objects = UserManager()
date_added = models.DateField(auto_now=False, auto_now_add=True)
email = models.EmailField(unique=True, db_index=True)

group = models.ForeignKey(Group)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['group']

is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)

def __str__(self):
return self.email

def get_full_name(self):
return self.email

def get_short_name(self):
return self.email

def has_perm(self, perm, obj=None):
return True

def has_perms(self, perm, obj=None):
return True

def has_module_perms(self, app_label):
return True

def is_staff(self):
return self.is_admin

每当我运行 migrate.py createsuperuser 时,它都会要求提供电子邮件、密码和组(组 ID)。如果我输入 admin,则会出现以下错误:

ValueError: invalid literal for int() with base 10: 'admin'

如果我输入 1(id),则会出现以下错误:

ValueError: Cannot assign "'1'": "User.group" must be a "Group" instance.

最佳答案

遇到同样的问题。

实际上,groupPermissionsMixin的归属,所以你需要做的是实现PermissionsMixinAbstractBaseUser

class User(AbstractBaseUser, PermissionsMixin):

关于python - Django 1.11 自定义用户模型与组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46300494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com