Django の models.py ファイルで、別のアプリのテーブルへの参照となる外部キーを定義することは可能でしょうか?
つまり、cf と profiles という 2 つのアプリがあり、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
このように 2 つのアプリを結び付けようとすると規則に違反することになるのでしょうか、それとも単に構文が間違っているだけなのでしょうか?
ベストアンサー1
ドキュメントによると、2 回目の試行は機能するはずです。
別のアプリケーションで定義されたモデルを参照するには、代わりにアプリケーション ラベルを明示的に指定する必要があります。たとえば、上記の Manufacturer モデルが production という別のアプリケーションで定義されている場合は、次のようにする必要があります。
class Car(models.Model):
manufacturer = models.ForeignKey('production.Manufacturer')
引用符で囲んでみましたか?