別のアプリのテーブルへの参照である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つのアプリを一緒にしようとすることで規則を破っていますか、それとも構文が間違っていますか?
ドキュメントによると、2回目の試行は機能するはずです。
別のアプリケーションで定義されたモデルを参照するには、代わりにアプリケーションラベルを明示的に指定する必要があります。たとえば、上記のManufacturerモデルがproductionと呼ばれる別のアプリケーションで定義されている場合、次を使用する必要があります。
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)
OK-私はそれを理解しました。できます。正しいimport
構文を使用するだけです。正しい構文は次のとおりです。
from prototype.cf.models import Movie
私の間違いは、その行の.models
部分を指定していなかったことです。ど!