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

标签 django

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

最佳答案

  • 如果子类化,原始字段仍将存储在原始表中,因此引用将保持有效。
  • 如果你想修补一个现有的类,这通常不是推荐的脏方法,你可以使用 contribute_to_class在一些 models.py在您要修改的文件之后将在应用程序中加载的文件:

  • 模型.py:
    from django.db.models import CharField
    from blog.models import Post
    CharField(max_length="100").contribute_to_class(Post, 'new_field')
    

    如果你这样做,你总是不得不冒这样的风险,你的更改可能会与其他代码段发生冲突,并且你的代码将更难维护!

    关于django - 如何覆盖在 Django 中安装的应用程序中定义的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4272092/

    相关文章:

    django - 如何在 Django 中使用自定义主键访问外键模型

    javascript - 单页应用程序网络爬虫和 SEO

    Django - 如何覆盖模型上的过滤器?

    python - 尝试从 django 中的数据库显示图像时图像损坏

    python - 我应该如何更改 "urlpatterns"中的路径?

    python - 为什么gunicorn会显示一个额外的进程?

    Django REST 即使使用 TokenAuthentication 也要求 CSRF token

    python - Django 保存随机行为

    python - 对于类型字符变化(255)SQLite3 到 Postgres Django 的值太长

    mysql - Django + MySQL - 管理站点 - 添加用户 - OperationalError - 保存点不存在