【问题标题】:Foreign key in custom user manager自定义用户管理器中的外键
【发布时间】:2020-03-26 13:27:33
【问题描述】:

我正在尝试在 django 中创建自定义用户模型,使用 ForeignKey 作为 required_field。 我的经理如下:

from django.contrib.auth.models import BaseUserManager

from .models import State
class CustomUserManager(BaseUserManager):
    def create_user(self, email, first_name, state, password=None, **extra_fields):
        email = self.normalize_email(email)
        user = self.model(email=email, first_name=first_name, state=State(pk=state), **extra_fields)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, first_name, state, password=None, **extra_fields):
        email = self.normalize_email(email)
        user = self.model(email=email, first_name=first_name, state=State(pk=state), **extra_fields)
        user.set_password(password)
        user.save()
        return user

尝试通过manage.py使用createsuperuser时,出现以下异常

from .models import State
ImportError: cannot import name 'State' from 'account.models'

State类存在于account.models中,模块名为account

我不知道如何创建用户,因为需要 State 实例。

【问题讨论】:

  • 你有循环导入吗? account.models 是否以某种方式导入您的用户模型?检查回溯以遵循导入路径。

标签: django django-models django-users


【解决方案1】:

用户模型从此模块导入设置User.objects = CustomUserManager()。您可以将State 移动到不同的模块/应用程序或将此管理器定义移动到模型中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2011-05-03
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多