今回は私がバカじゃなくて本当の葛藤だと思います。私は以下のコードを持っています(簡略化):
from django.db import models
class Alpha(models.Model):
relation = models.ForeignKey('Delta', related_name = 'reverse_relation', blank = True, null = True)
class Meta:
abstract = True
class Beta(Alpha):
pass
class Gamma(Alpha):
pass
class Delta(models.Model):
pass
問題は、Delta.reverse_relation が Beta のインスタンスまたは Gamma のインスタンスを参照できることです。どうにかして複数の related_name 値 (またはクラス名に依存する値) を提供する必要があります。問題は明らかですが、完全であると思います。関連フィールド「Delta.reverse_relation」を使用。「relation」の定義に related_name 引数を追加します。
app.beta: フィールド 'relation' の逆クエリ名が、関連フィールド 'Delta.reverse_relation' と衝突します。「relation」の定義に related_name 引数を追加します。
app.gamma: フィールド 'relation' のアクセサーが関連フィールド 'Delta.reverse_relation' と衝突します。related_name 引数を ' の定義に追加します
app.gamma: フィールド 'relation' の逆クエリ名が、関連フィールド 'Delta.reverse_relation' と競合しています。「relation」の定義に related_name 引数を追加します。
親アルファに ForeignKey を配置することはまったく可能ですか、またはこのコードをベータとガンマにカットアンドペーストする唯一の方法ですか? すべての子が共有するフィールドの半分を親で定義できないと、継承のポイントが無効になるため、私はそうしないことを好みます。
どんな助けでも大歓迎です!
(エラーメッセージがコードボックスにない理由について誰かがコメントできる場合は、修正します。)