问题:从一个应用程序到Django中另一个应用程序的外键
我想知道是否有可能在Django的models.py文件中定义外键,该外键引用了另一个应用程序中的表?
换句话说,我有两个应用程序,分别称为cf和profile,在cf / models.py中,我拥有(以及其他功能):
class Movie(models.Model):
title = models.CharField(max_length=255)
并希望在profile / 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
我是通过尝试以这种方式将两个应用程序绑定在一起来违反规则,还是只是语法错误?
回答 0
根据文档,您的第二次尝试应该可行:
要引用在另一个应用程序中定义的模型,必须改为显式指定应用程序标签。例如,如果上述制造商模型是在另一个称为生产的应用程序中定义的,则需要使用:
class Car(models.Model):
manufacturer = models.ForeignKey('production.Manufacturer')
您是否尝试过将其用引号引起来?
回答 1
也可以通过类本身:
from django.db import models
from production import models as production_models
class Car(models.Model):
manufacturer = models.ForeignKey(production_models.Manufacturer)
回答 2
好的-我知道了。您可以做到,只需使用正确的import
语法即可。正确的语法是:
from prototype.cf.models import Movie
我的错误是没有指定该.models
行的一部分。天哪!