【问题标题】:Django permission inheritance problem and MetaDjango权限继承问题和Meta
【发布时间】:2011-03-24 19:08:47
【问题描述】:

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

我们将不胜感激有关如何实现这一目标的建议。

伊恩

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

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

【问题讨论】:

  • 那么在你展示的时候这样做有什么问题?
  • 我希望我知道。这就是我在这里发布问题的原因。
  • 我也有同样的问题。解决这个问题的方法是什么,以便我可以同时使用基类和子类检查权限?

标签: django inheritance permissions meta


【解决方案1】:

【讨论】:

  • 是的,我已经读过了。我写的根本行不通,但我不明白 Django 或 Python 的原因。
  • Meta 类不是直接继承的,Django 做了一些时髦的东西,并且不会以同样的方式处理它的所有属性......如果你喜欢,你可以看看here要知道_meta 上的属性是如何设置的...
  • 不回答问题。 OP正在询问如何解决具体继承的问题,而不是抽象继承,只有后者是文档所描述的。
【解决方案2】:

在我的情况下,由于 South,显式继承 Meta 不起作用。见this ticket

django-admin.py syncdb --all 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多