2

私のジャンゴモデルに問題があります。

これは私のモデルです:

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'
4

0 に答える 0