私はこの例外を取得:DjangoのORM:子クラスのフィールドの上書きrelated_name
class BasePlugin(models.Model):
ticket = models.OneToOneField('foobar.ticket', primary_key=True,
related_name='%(app_label)s_%(class)s')
class Meta(IndexImplementation.Meta):
abstract = True
# .. Other stuff which should be available for SpecialPlugin
# and other child classes.
class SpecialPlugin(BasePlugin):
ticket = models.OneToOneField('foobar.ticket', primary_key=True,
related_name='special')
私だけfound this noteが、私の場合は、親クラスは抽象である:ここでは
django.core.exceptions.FieldError:
Local field 'ticket' in class 'SpecialPlugin' clashes with field of similar name from base class 'BasePlugin'
は私のモデルです。ここに当てはまるかどうかわかりません。
BasePluginの関連する名前(%(app_label)s_%(class)s
)が古いコードを壊すので、子クラスSpecialPlugin
に関連名「special」を付けたいとします。
「特別な」SpecialPlugin.ticketにrelated_nameを与える方法はありますか?これが問題の核心のように見える
このエラーは、親クラスが** abstract **でない場合にのみ発生します。私はちょうどあなたのものに似たシンプルなモデルでテストしたところ、うまく動作します。例外を発生させるDjangoコードを調べると、親クラスが抽象クラスであるかどうかがチェックされます。これは、 'BasePlugin'が抽象として正しく設定されていないことを私に示唆しています。 'IndexImplementation.Meta'には何がありますか? IndexImplementation.Meta @solarissmoke – solarissmoke
は真=抽象的です。だから私はエラーメッセージを理解していないのです。 – guettli