115

Djangoのmodels.pyファイルで、別のアプリのテーブルへの参照である外部キーを定義できるかどうか疑問に思っていますか?

つまり、cf と profile という 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 つのアプリを結びつけようとすることは規則に違反しているのでしょうか、それとも単に構文が間違っているのでしょうか?

4

3 に答える 3

174

ドキュメントによると、2回目の試みはうまくいくはずです:

別のアプリケーションで定義されたモデルを参照するには、代わりにアプリケーション ラベルを明示的に指定する必要があります。たとえば、上記の Manufacturer モデルが production という別のアプリケーションで定義されている場合は、次を使用する必要があります。

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

引用符で囲んでみましたか?

于 2008-11-27T14:27:45.400 に答える
10

わかりました-わかりました。あなたはそれを行うことができます。正しいimport構文を使用するだけです。正しい構文は次のとおりです。

from prototype.cf.models import Movie

私の間違いは.models、その行の一部を指定していませんでした。ああ!

于 2008-11-27T14:26:28.103 に答える