当前位置: 首页 > 知识库问答 >
问题:

Django:扩展其他应用程序的模型

施茂
2023-03-14

我正在Django上做类似ERP的小项目,其中包含不同的应用程序(产品、销售、采购、会计、MRP、...)。其中一些有依赖关系(例如,销售应用程序需要产品应用程序)。

继承或抽象类似乎也是不合适的,因为我不是试图为子产品创建模型,而是在表中现有信息(条目)的基础上进行增长或扩展。

实现这一点的最佳方法是什么?我应该考虑编写自定义迁移操作吗?否则,还有更好的办法吗?谢谢!

共有1个答案

逄皓轩
2023-03-14

我建议您创建一个数据库表来保存所有可能注册模块和类。因此您可以在eval语句中使用它作为变量python代码。如果您有预定义的方法名称,在本方法中我将其称为common_method。

您甚至不需要有一个抽象

my_evaluated_code = 'from '+mymodule_var_name + ' import ' + myclass_var_name +' as custommodule'
eval(my_evaluated_code)
custommodule.common_method()
 类似资料:
  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • 创建一个基于Django3的全栈项目似乎是最佳实践(或至少一种常用方法),该项目使用特定于项目的Django应用程序(而不是独立的Django应用程序),其结构如下(参见此处): 应用程序(此处:)通过以最基本的形式(没有规则、视图等)集成 和 在另一个应用程序(例如)中使用一个应用程序的逻辑(例如)可以很好地工作(例如通过中的)。 但是,如果我试图在app2的逻辑中访问app1的模型,我会得到。

  • 问题内容: 如果要覆盖django中应用程序随附的模板(在app / templates / app /中),请在另一个目录中创建相同名称的模板,模板加载器会在应用程序的模板目录之前检查该模板。如果您只想覆盖模板的某些块,则还必须复制整个模板广告,更改该块,这实际上不是很干。 有人知道一种方法来覆盖原始模板,同时扩展它,以便您只需要覆盖要更改的特定块吗?(这样做是在不更改模板名称的情况下进行的,因

  • Node.js以单线程模式运行,但它使用事件驱动的范例来处理并发。 它还有助于创建子进程,以便在基于多核CPU的系统上利用并行处理。 子进程总是有三个流child.stdin , child.stdout和child.stderr ,它们可以与父进程的stdio流共享。 Node提供了child_process模块,该模块具有以下三种创建子进程的主要方法。 exec - child_process

  • 说明 这个 API 通常可以与其他所有包一起工作,然而,一些特殊的与 Laravel 融合很深,利用 Laravel 的路由提供某些功能的包,可能和 API 冲突。这一页列表其他的包与 API 冲突,以及一些必要的步骤使两个包正常工作。 目前还没有冲突的包.

  • 问题内容: 有没有一种方法可以扩展内置的Django Group对象以添加其他属性,类似于可以扩展用户对象的方法?使用用户对象,你可以执行以下操作: 并将以下内容添加到settings.py文件中 这使你: 扩展小组有什么等效方法吗?如果没有,我是否可以采用其他方法? 问题答案: 你可以创建一个对Group进行子类化的模型,添加自己的字段,并使用模型管理器返回所需的任何自定义查询集。这是一个截断的