54

同じモデルへの 2 つの外部キーが必要です。

class Test(models.model):
    example1 = models.ForeignKey(Example)
    example2 = models.ForeignKey(Example)

次のようなエラーが表示されます。

フィールド 'example1' のアクセサーが関連フィールド 'Example.test_set' と衝突します。「example1」の定義に related_name 引数を追加します。

4

4 に答える 4

122

使ってみてくださいrelated_name:

class Test(models.model):
    example1 = models.ForeignKey('Example', related_name='example1')
    example2 = models.ForeignKey('Example', related_name='example2')
于 2009-02-12T21:35:53.293 に答える
29

Django はいくつかの Python マジックを使用してモデル間の関係を定義します。そのうちのいくつかは、関係でモデルの名前を使用することを含みます (「test__set」の「テスト」はそこから来ています)。定義した外部キ​​ーごとに 1 回、サンプル モデルに「test__set」を 2 回配置しようとしています。

エラー メッセージは、試してみるべきことを示唆しています。衝突する 2 つの名前を自動生成する代わりに使用できる引数を定義しrelated_nameます (これらの 'test_set's の 1 つをオーバーライドします)。

詳細はこちら: ページは削除されました

モデル関係に関する現在のページ: https://docs.djangoproject.com/en/2.0/ref/models/fields/#module-django.db.models.fields.related

于 2009-02-12T21:36:36.303 に答える
8

エラー メッセージの指示に従ってください。その意味がわからない場合は、 のドキュメントを参照してくださいrelated_name

于 2009-02-13T03:06:37.900 に答える