2011-03-24 53 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修復了這個問題。