【发布时间】:2019-07-17 01:57:05
【问题描述】:
我在 django 1.11 中有一个应用程序,我有一个应用程序“帐户”来管理用户。 用户可以分配角色,使用管理器创建用户时会出现问题。
添加用户名时出现错误:
IntegrityError at /accounts/add_user/
UNIQUE constraint failed: accounts_role.id
这是我的模型:
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('Email address'), unique=True)
first_name = models.CharField(_('First name'), max_length=60, blank=True)
last_name = models.CharField(_('Last name'), max_length=60, blank=True)
roles = models.ManyToManyField(Role, unique=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
下面是角色类:
class Role(models.Model):
ADMIN = 1
PLAYER = 2
ROLE_CHOICES = (
(ADMIN, 'admin'),
(PLAYER, 'player'),
)
id = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, default=2, primary_key=True, unique=False)
def __str__(self):
return self.get_id_display()
这里是经理:
class UserManager(BaseUserManager):
def create_user(self, email, password):
user = self.model(email=email, password=password)
user.set_password(password)
user.is_staff = False
user.is_superuser = False
user.save(using=self._db)
role = Role.objects.create(id=2)
user.roles.add(role)
return user
【问题讨论】:
标签: python django orm m2m django-managers