0

Python/Django フレームワークを始めたばかりなので、これがばかげている場合は申し訳ありません...しかし、解決策が見つかりません。

class Dealer(models.Model):
    name = models.CharField(max_length=200)
    contacts = models.ManyToManyField(Contact)

class Contact(models.Model):
    name = models.CharField(max_length=200)
    dealers = models.ManyToManyField(Dealer)

この関係をセットアップしましたが、SyncDB を実行すると機能しません。連絡先がこの行に定義されていないことがわかります
contacts = models.ManyToManyField(Contact)

私はコンパイルされた言語に精通しています。連絡先クラスが存在することをPythonに伝える方法はありますか、それとも、この種の関係を定義するための特別な構文がありません。

4

2 に答える 2

2

M:Nどちらのモデルも関係 (双方向の関係)であるため、双方向の ManyToMany の必要性はわかりません。

ここでの問題は、Contactこのコードの実行時点では定義されていません。

contacts = models.ManyToManyField(Contact)

したがって、機能させるには引用符で囲む必要があります

contacts = models.ManyToManyField('Contact')

そのドキュメントはここにあります

次のモデルをお勧めします。

class Dealer(models.Model):
    name = models.CharField(max_length=200)
    contacts = models.ManyToManyField('Contact')

class Contact(models.Model):
    name = models.CharField(max_length=200)

そしてそれはあなたが探していることを正確に行います。

ManyToManyここで関係について読むことができます。同じリンクには、処理方法も記載されていますReverse m2m queries

于 2013-08-01T15:30:05.220 に答える