1. ホーム
  2. python

[解決済み] Django であるアプリから別のアプリへの外部キー

2022-09-02 01:46:04

質問

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をimportしてみましたが、いつも以下のようなエラーになります。

NameError: name 'User' is not defined

この方法で2つのアプリを結びつけようとしている私は、規則を破っているのでしょうか、それとも構文が間違っているのでしょうか?

どのように解決するのですか?

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

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

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

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