我想知道是否可以在Django的models.py文件中定义一个外键,该文件是对另一个应用程序中的表的引用?
换句话说,我有两个应用程序,名为cf和profiles,在cf / models.py中我有(除其他外):
class Movie(models.Model):
title = models.CharField(max_length=255)
并在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
我是否通过尝试以这种方式将两个应用程序绑定在一起来破坏规则,或者我的语法错误?
答案 0 :(得分:132)
根据文档,你的第二次尝试应该有效:
要引用另一个应用程序中定义的模型,您必须明确指定应用程序标签。例如,如果上面的制造商模型在另一个名为production的应用程序中定义,则需要使用:
class Car(models.Model):
manufacturer = models.ForeignKey('production.Manufacturer')
你试过把它放到引号中吗?
答案 1 :(得分:22)
也可以通过课程本身:
from django.db import models
from production import models as production_models
class Car(models.Model):
manufacturer = models.ForeignKey(production_models.Manufacturer)
答案 2 :(得分:9)
import
语法。正确的语法是:
from prototype.cf.models import Movie
我的错误是没有指定该行的.models
部分。 D'哦!