我有一个简单的模型User,该模型简单地扩展了AbstractUser类并添加了一些额外的字段。我尝试创建超级用户时尝试添加“对象= UserQuerySet.as_manager(),但给我一个错误“未定义get_by_natural_key()”。似乎它覆盖了常规用户管理器,因此我丢失了我尝试将object字段重命名为其他字段,这样我就不会覆盖默认字段,但仍然是相同的错误。有什么方法可以简单地添加查询集而不创建整个新的manager类,扩展BaseUserManager,添加所有从零开始的默认方法,然后向其中添加我的自定义查询集?我只想保留常规的UserManager并仅添加查询集。
class UserQuerySet(QuerySet):
def more_ten(self):
return self.filter(points__gt=10)
class User(AbstractUser):
points = IntegerField(default=0)
tester = UserQuerySet.as_manager()
#objects = UserQuerySet.as_manager()
答案 0 :(得分:1)
根据docs,您的自定义用户管理器应继承自BaseUserManager
class UserQuerySet(QuerySet):
def more_ten(self):
return self.filter(points__gt=10)
from django.contrib.auth.models import UserManager as OldUserManager
class UserManager(OldUserManager):
def get_queryset(self):
return UserQuerySet(model=self.model, using=self._db, hints=self._hints)
class User(AbstractUser):
objects = UserManager()