Python 在Django中从一个应用程序到另一个应用程序的外键

Python 在Django中从一个应用程序到另一个应用程序的外键,python,django,django-models,Python,Django,Django Models,我想知道是否可以在Django中的models.py文件中定义一个外键,该外键是对另一个应用程序中的表的引用 换句话说,我有两个应用程序,叫做cf和profiles,在cf/models.py中我有(除其他外): 在profiles/models.py中,我想要: class MovieProperty(models.Model): movie = models.ForeignKey(Movie) 但我不能让它工作。我试过: movie = models.ForeignKey(

我想知道是否可以在Django中的models.py文件中定义一个外键,该外键是对另一个应用程序中的表的引用

换句话说,我有两个应用程序,叫做cf和profiles,在cf/models.py中我有(除其他外):

在profiles/models.py中,我想要:

class MovieProperty(models.Model):
    movie = models.ForeignKey(Movie)
但我不能让它工作。我试过:

    movie = models.ForeignKey(cf.Movie)
我曾尝试在models.py的开头导入cf.Movie,但总是出现错误,例如:

NameError: name 'User' is not defined

我是因为试图用这种方式将两个应用程序绑定在一起而违反了规则,还是因为语法错误?

好吧,我已经找到了答案。您可以这样做,只需使用正确的
import
语法即可。正确的语法是:

from prototype.cf.models import Movie

我的错误是没有指定该行的
.models
部分。哦

根据文档,您的第二次尝试应该有效:

要引用在另一个应用程序中定义的模型,必须明确指定应用程序标签。例如,如果上面的制造商模型是在另一个名为production的应用程序中定义的,则需要使用:


你试过用引号括起来吗?

也可以传递类本身:

from django.db import models
from production import models as production_models

class Car(models.Model):
    manufacturer = models.ForeignKey(production_models.Manufacturer)

有时你必须使用引号,而不是导入,因为你可能会得到相互导入的文件。可以找到相关文档。在许多应用程序中使用外键可以吗?我正在做一个项目,在一个项目中的许多应用程序中有许多外键的应用程序。仅供参考,我已经开始提问,但正在等待答案。我知道晚了,但这主要是选择和组织的问题。我有一些“内部”应用程序,它们从来都不打算用于外部。它们可以相互依赖,存在的主要目的是方便地组织文件和名称空间。外部应用程序(如Django软件包中的应用程序)和有一天我可能会为公众贡献的应用程序,需要尽可能保持这些依赖项的自由(尽管依赖于其他受良好支持的公共域应用程序可能是可以的。许多与公共用户相关的应用程序依赖于Django的用户/组/权限模型)。谢谢,这对我很有用。通过添加引号,我们不需要导入类。但是我想知道如果我们决定导入这个类,比如@andorov给出的另一个很好的例子,是否有什么不同?
class Car(models.Model):
    manufacturer = models.ForeignKey('production.Manufacturer')
from django.db import models
from production import models as production_models

class Car(models.Model):
    manufacturer = models.ForeignKey(production_models.Manufacturer)