如何覆盖Django中安装的应用程序中定义的模型?

Hak*_* B. 8 django

是否可以重新定义INSTALLED_APP中使用的模型而无需修改相关应用程序?例如,django-basic-blog有一个Post模型,我想添加一个字段.我可以直接编辑django-basic-blog但是为了代码可移植性,我想在它之上构建.我不想继承子类,因为我想保留对Post模型的所有现有引用.提前致谢!

Ber*_*ant 12

  1. 如果您继承原始字段仍将存储在原始表中,因此引用将保持有效.

  2. 如果你想修补一个现有的类,这通常不是值得推荐的脏方法,你可以contribute_to_class在一个models.py文件中使用,该文件将在你要修改的应用程序之后加载到应用程序中:

models.py:

from django.db.models import CharField
from blog.models import Post
CharField(max_length="100").contribute_to_class(Post, 'new_field')
Run Code Online (Sandbox Code Playgroud)

如果你不喜欢这样,你总是有裸露你的变化可以与其他代码块,你的代码将很难维持冲突的风险!