【问题标题】:Django - same abstract base model for all models? Good, bad?Django - 所有模型都使用相同的抽象基础模型?好坏?
【发布时间】:2010-03-04 04:36:50
【问题描述】:

如果我正在构建一个包含 30 多个模型的应用程序,并且我希望将来可以选择将自定义管理器或其他功能插入到所有模型中,那么使用抽象基础模型是否是个好主意并为每个模型子类化它,还是有令人信服的理由不这样做?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    我在大 ORM 重写之前开始使用 Django,所以我养成了创建一个 MixIn 类的习惯,它为我们所有的内容类提供了许多通用功能。常见的 URL 创建方案、成员级别检查功能等。

    由于我们在所有模型中使用了非常一致的命名方案,这近似于 ABC,但它只是 Good Old Python。模型声明如下所示:

    class SomeModel(models.Model, MixInClass):
        pass
    

    【讨论】:

    • @Peter 谢谢。您认为仍然使用新的 ORM 会更好,还是如果您现在从头开始,您会使用 ABC?
    • @orokusaki:这是一个很好的问题,但我没有一个通用的答案。当时我仅限于添加方法和非数据库属性,所以我没有做任何 ABC 会增强的事情。我最近使用模型继承(不是 ABC)的一个项目是关于 ORM 在该领域的局限性的一个教训。与 Django 一样好,这是一个棘手的领域,并且很容易受到特定于应用程序的怪异的影响。
    • 1) 再次感谢,2) 我非常同意。
    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2015-11-25
    相关资源
    最近更新 更多