Django:外部キーの衝突に対するリバースアクセサー


113

基本クラスから継承する2つのDjangoモデルがあります。

- Request
    - Inquiry
    - Analysis

リクエストには、組み込みのユーザーモデルに対する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ことで衝突を防ぐ必要があると述べていますが、それでも同じエラーが発生します。なぜこれが起こっているのか誰でも思いつくことができますか?ありがとう!


1
あなたには、あなたのモデルの定義を投稿してくださいすることができますInquiryAnalysisしてとの関係Request
dm03514

Django 1.9の関連する名前の更新されたリンク
2016年

回答:


138

これrelated_nameにより、フィールドが互いに競合しないことが保証されますが、2つのモデルがあり、それぞれに両方のフィールドがあります。それぞれに具体的なモデルの名前を入れる必要があります。これは、いくつかの特別な文字列置換で行うことができます。

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

1
あなたの答えのリンクは死んでいます。
Matt D

2
@MatthewDrill私はそれを修正するために編集を提出しました、その間docs.djangoproject.com/en/1.10/topics/db/models/…を
Ivan

正解です。ありがとうございました!
Tms91
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.