如果您在项目中的一个应用程序中使用AbstractUser在Django中扩展用户模型,那么如何从第二个应用程序中引用它?

时间:2018-01-16 18:50:39

标签: python django

您是否能够将应用程序中不包含扩展用户模型的模型与其他应用程序中的扩展用户模型建立外键关系?

是从第二个应用settings.AUTH_USER_MODEL引用扩展用户模型的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

有几种方法可以获得你想要的东西。 我在自己的项目中使用了以下内容。

用户/ models.py

class User(AbstractUser):
    special_variables = models.TextField()

    class Meta:
        app_label = 'users' # Don't think is required

<强> settings.py

...
AUTH_USER_MODEL = 'users.User'
...

对于其他所有应用,您都可以使用from users.models import User

from django.contrib.auth import get_user_model
User = get_user_model()

这是get_user_model()做的事情

def get_user_model():
    """
    Return the User model that is active in this project.
    """
    try:
        return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
    except ValueError:
        raise ImproperlyConfigured("AUTH_USER_MODEL must be of the form 'app_label.model_name'")
    except LookupError:
        raise ImproperlyConfigured(
            "AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
        )

给你一个<class 'users.models.User'>