在Django中扩展模型类的正确方法

时间:2014-07-14 16:34:59

标签: python django django-models monkeypatching

假设我们要构建两个独立的Django应用程序:

  • 进行投票
  • 评论

任何这些功能都可以插入任何现有的Django模型。例如,我们可能希望对模型Article启用投票和评论。

但是如果我们想对评论进行投票怎么办? Comment模型取决于投票应用。如果我们只想使用评论而没有投票应用程序会怎么样?由于依赖性,它不起作用。

因此,启用投票应该在外部模型定义中完成,对吧?例如,在设置中。现在,如何在不修改代码的情况下动态扩展这些现有模型?

经过一些研究后我发现add_to_class方法,但似乎使用它被认为是不好的开发实践。

1 个答案:

答案 0 :(得分:1)

为什么要将此功能部分设为模型的一部分?通常这些是独立的应用程序,其中的模型与文章有关系。您可以使用generic relations来定义评论或投票应用与目标模型之间的数据库关系。