【问题标题】:Abstract model class in django, but with tabledjango 中的抽象模型类,但带有表格
【发布时间】:2012-04-30 21:15:24
【问题描述】:

在Django中,如果我做一个抽象模型类,然后有实际的派生类,只有这些类会有关联表,抽象类不能自己实例化。如果我删除 abstract=True 元信息,则会为基类创建一个实际表,但这样做允许客户端代码创建基类的对象。

有没有办法强制客户端代码总是实例化派生类,同时有一个与基类关联的表?

【问题讨论】:

  • 只是在这里大声思考,但您可以有一个抽象的“模板”类,您的派生类继承它,为您提供共享抽象类来构建模型以获取表格。您的“基”类不需要声明任何其他字段。
  • @Brandon:如果我使用抽象类,那么我需要使用泛型关系。我希望我的基类有一个表,因为我想定义指向其内容的外键,而不必求助于泛型关系,但我也不希望一个纯基类被意外实例化。
  • 嗯。不确定完成您需要做的事情的最佳方法是什么。
  • 如果在基类上附加一个自定义 models.Manager 并“削弱”create 方法会怎样?
  • @Brandon:我只是好奇。我注意到 django 做了很多魔法,所以也许有一些魔法元标志来执行我需要的东西。我认为即使在纯 python 中也不可能,除非你在__init__ 中抛出异常...

标签: python django


【解决方案1】:

您可以尝试在课堂上返回None 或在__new__ 中提高NotImplemented,我不知道这是否会影响其他任何事情,但值得一试。

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 2012-02-04
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多