如何在pythonDjango项目中为多个应用程序使用模型?

2024-09-27 21:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个叫myoffice的Django项目。在这个项目中,我创建了一个应用程序。在创建这个之前,我已经执行了makemigrations和migrate,创建auth\u user table和auth\u user\u groups等其他表

在创建了一个应用程序之后,它运行得很好。你知道吗

现在,我创建了一个新的应用程序,名为expenses。我已经写了所有的模型,视图,模板和url文件。在我的模型中,有几个模型对如下用户具有外键引用:

exch_usr = models.ForeignKey('User', on_delete=models.PROTECT)

我导入的用户模型如下:

from django.contrib.auth.models import User

但是,我在运行makemigrations时遇到一个错误:

ValueError: Cannot create form field for 'txn_usr' yet, because its related model 'User' has not been loaded yet

Tags: 项目django用户模型auth应用程序modelsusr
3条回答

如果链接模型在另一个应用程序中,则需要在目标字符串中引用该模型。你知道吗

exch_usr = models.ForeignKey('auth.User', on_delete=models.PROTECT)

注意,您根本不需要导入用户。你知道吗

如果您已经在该服务器上导入用户模型型号.py,您可以将其设置为ForeignKey。请注意,这不是一个字符串。你知道吗

exch_usr = models.ForeignKey(User, on_delete=models.PROTECT)

丹妮尔的答案很完美,但我有一个建议给你。因此,如果用户模型可能被换成另一个(考虑将来),并且为了使应用程序尽可能可重用,您应该使用settings.AUTH\用户\模型作为模型中的参考。有关自定义和引用用户模型的更多信息,请参见https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#referencing-the-user-model。在代码中,必须使用get\u user\u model Django(创建用户引用)实用程序以干净的方式创建这个开关。你知道吗

class SomeClass(models.Model): .... custome_user = models.ForeignKey(settings.AUTH_USER_MODEL)

以及引用用户属性:

from django.contrib.auth import get_user_model User = get_user_model() class AnotherClass(models.Model): .... username = User.USERNAME_FIELD

相关问题 更多 >

    热门问题