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

10 投票
2 回答
3468 浏览
提问于 2025-04-16 02:29

我想在一个数据库表里添加一列,但我不想去改动第三方模块,因为将来如果我需要升级这个模块的话,可能会有问题。有没有办法让我在自己的代码里添加这个字段,这样在以后的新版本中就不用手动再添加这个字段了?

2 个回答

1

看看Django中的模型继承和抽象类

你可以在这里找到更多信息:http://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

10

你可以使用 ModelName.add_to_class(或者 .contribute_to_class),但是如果你已经运行过 syncdb,那么就没有办法自动添加你需要的列了。

为了让代码更容易维护,你可能想在自己的应用中通过子类化来扩展所需的模型,并使用像 south 这样的工具来处理数据库的迁移,或者直接使用 OneToOneField,并创建一个相关的模型(就像 UserProfile 和 auth.User 之间的关系一样)。

撰写回答