1. ホーム
  2. python

[解決済み] Django: 外部キーの逆アクセッサが衝突する

2022-03-12 09:02:15

質問

ベースクラスを継承した2つのDjangoモデルを持っています。

- Request
    - Inquiry
    - Analysis

Requestは組み込みのUserモデルに対する2つの外部キーを持っています。

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')

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

Reverse accessor for 'Analysis.assign_user' clashes with reverse accessor for 'Inquiry.assign_user'.

私が読んだすべての本によると related_name は、衝突を防ぐはずですが、まだ同じエラーが出ます。なぜこのようなことが起こるのか、どなたか思い当たる方はいらっしゃいますか?ありがとうございます。

解決方法は?

その related_name はフィールドが互いに衝突しないことを保証しますが、あなたは2つのモデルを持ち、それぞれがそれらのフィールドを両方持っています。それぞれに具象モデルの名前を入れる必要がありますが、これはいくつかの特別な 文字列置換 :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')