BaseUserManager class 的更新方法在哪里?
Where is the update method on the BaseUserManager class?
我有以下 class 创建了一个新用户,该用户有一个位于 kwargs 字典中的 m2m 对象,并且更新产生了这个错误:'SomeUser' 对象没有属性 'update'.
class SomeUserManager(BaseUserManager):
def _create_user(self, email, password=None, is_superuser=False, **kwargs):
if type(kwargs['m2mobject']) is list:
m2mobject = kwargs['m2mobject'].pop(0)
user = self.model(email=email, is_superuser=is_superuser, **kwargs)
if password:
user.set_password(password)
user.save()
user.update(m2mobject=m2mobject)
return user
def create_user(self, email, password=None, **kwargs):
return self._create_user(email, password, is_superuser=False, **kwargs)
def create_superuser(self, email, password, **kwargs):
return self._create_user(email, password, is_superuser=True, **kwargs)
我必须从 kwargs 中删除这个 m2mobject 以便首先创建用户,然后通过这个更新方法我可以将 m2m 对象添加到用户。为什么 Django 不直接添加 m2mobject,这样我就不必从 kwargs 中删除 m2mobject?如果我不这样做,我会得到这个错误
Cannot add "m2mobject": instance is on database "None", value is on database "default"
如有任何帮助,我们将不胜感激。
update
是查询集上的方法,而不是模型实例。要将对象添加到 m2m 字段,请对字段本身使用 add
方法。
user.m2mobject.add(m2mobject)
我有以下 class 创建了一个新用户,该用户有一个位于 kwargs 字典中的 m2m 对象,并且更新产生了这个错误:'SomeUser' 对象没有属性 'update'.
class SomeUserManager(BaseUserManager):
def _create_user(self, email, password=None, is_superuser=False, **kwargs):
if type(kwargs['m2mobject']) is list:
m2mobject = kwargs['m2mobject'].pop(0)
user = self.model(email=email, is_superuser=is_superuser, **kwargs)
if password:
user.set_password(password)
user.save()
user.update(m2mobject=m2mobject)
return user
def create_user(self, email, password=None, **kwargs):
return self._create_user(email, password, is_superuser=False, **kwargs)
def create_superuser(self, email, password, **kwargs):
return self._create_user(email, password, is_superuser=True, **kwargs)
我必须从 kwargs 中删除这个 m2mobject 以便首先创建用户,然后通过这个更新方法我可以将 m2m 对象添加到用户。为什么 Django 不直接添加 m2mobject,这样我就不必从 kwargs 中删除 m2mobject?如果我不这样做,我会得到这个错误
Cannot add "m2mobject": instance is on database "None", value is on database "default"
如有任何帮助,我们将不胜感激。
update
是查询集上的方法,而不是模型实例。要将对象添加到 m2m 字段,请对字段本身使用 add
方法。
user.m2mobject.add(m2mobject)