Django - 如何在不修改的情况下扩展 3rd 方模型

Posted

技术标签:

【中文标题】Django - 如何在不修改的情况下扩展 3rd 方模型【英文标题】:Django - how to extend 3rd party models without modifying 【发布时间】:2011-03-26 21:02:56 【问题描述】:

我想在数据库表中添加一列,但我不想修改第 3 方模块,以防将来需要/决定升级模块。有没有办法可以在我的代码中添加这个字段,这样我就不必手动添加这个字段了?

【问题讨论】:

【参考方案1】:

您可以使用 ModelName.add_to_class(或 .contribute_to_class),但如果您已经运行了 syncdb,则无法让它自动添加您需要的列。

对于可维护的代码,您可能希望通过在自己的应用程序中对所需模型进行子类化来进行扩展,并使用类似 south 的东西来处理数据库迁移,或者只使用 OneToOneField,并拥有一个相关的模型(如 UserProfile是 auth.User)。

【讨论】:

【参考方案2】:

看看 Django 模型继承和抽象类 http://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

【讨论】:

以上是关于Django - 如何在不修改的情况下扩展 3rd 方模型的主要内容,如果未能解决你的问题,请参考以下文章

在不修改 sys.path 或 3rd 方包的情况下导入 Python 包中的供应商依赖项

如何在不使用 3rd-party API 的情况下用 C# 压缩文件?

如何在不使用 3rd 方服务的情况下使用 WCF 将推送通知发送到单独的 Android 设备?

在不使用 3rd 方库的情况下获取访客位置(IP)[重复]

在不修改代码的情况下无限扩展应用项目

在不使用 3rd 方库的情况下,在反应本机中显示主屏幕之前显示启动屏幕