2011-03-24 52 views
1

我知道如果超类具有abstract = True,但是不能继承,Meta可以被继承。这是否是因为Django以某种方式消耗并从具体类中移除了Meta类?我想按照下面的例子做一些事情,所以Derived可以从Base获得Meta属性(在这种情况下,作为django-guardian的一部分继承权限)。Django权限继承问题和Meta

有关如何实现这一点的建议,将不胜感激。

伊恩

class Base(Model): 
    class Meta: 
     permissions = (("foo", "Allowed to do foo"),) 

class Derived(Base): 
    class Meta(Base.Meta): pass 
+0

那么你在展示时做什么问题? – 2011-03-24 20:37:30

+0

我希望我知道。这就是我在这里发布问题的原因。 – IanSR 2011-03-30 01:39:57

+0

我有同样的问题。什么是这个工作,所以我可以使用基类和子类来检查权限? – 2013-02-25 21:18:16

回答

4
+0

是的,我读过。我写的东西根本行不通,但我不明白Django或Python的原因。 – IanSR 2011-03-30 01:39:40

+0

Meta类没有直接继承,Django做了一些时髦的东西,并没有以同样的方式处理它的所有属性...你可以看看[这里](http://code.djangoproject.com /browser/django/trunk/django/db/models/options.py#L57)如果你想知道'_meta'上的属性是如何设置的...... – 2011-03-30 20:27:54

0

在我的情况下明确地继承Meta并没有因为南的工作。见this ticket

django-admin.py syncdb --all修复了这个问题。