私のジャンゴモデルに問題があります。
これは私のモデルです:
class Item(MPTTModel):
__metaclass__ = TransMeta
name = models.CharField(max_length=250, verbose_name=u'Menu name', blank=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
class Meta:
translate = ('name',)
class MPTTMeta:
order_insertion_by = ['name',]
TransMeta と MPTTModel という 2 つのモデルを 1 つのモデルで連携させようとしています。実行しようとすると、エラーが発生します。
TypeError: メタクラス ベース メタクラスの競合を呼び出すときにエラーが発生しました: 派生クラスのメタクラスは、そのすべてのベースのメタクラスの (厳密ではない) サブクラスでなければなりません
Google で同様の解決策を見つけました: http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/で、コードを次のように変更しました。
class Item(MPTTModel):
__metaclass__ = classmaker(right_metas=(TransMeta,))
name = models.CharField(max_length=250, verbose_name=u'Menu name', blank=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
class Meta:
translate = ('name',)
class MPTTMeta:
order_insertion_by = ['name',]
classmaker はこのコードhttp://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/#block-0です。しかし、翻訳は機能しません。model.name を取得しようとすると、エラーが発生します。
FieldDoesNotExist at /admin/menu/item/add/
Item has no field named 'name'