目前,我正处于为锦标赛表格创建新应用程序的设计阶段。其目标是提供一个应用程序,在该应用程序中,可以在后端输入不同联赛的比赛结果,并在前端查看最终表格。作为数据库,我想使用PostgreSQL,因为它提供了区分不同联盟的模式。当前架构(很可能)如下所示:
= schema ==== tablename ==============
- public ___ teams
- league1 ___ league1_<season>_results
|_ league1_<season>_tables
- league2 ___ league2_<season>_results
|_ league2_<season>_tables
- league3 ___ league3_<season>_results
|_ league3_<season>_tables
<season> ... 2019, 2020, ...
正如leagueX的leagueX结果一样,leagueX表将具有相同的模型,这意味着联赛1中的league结果与联赛2中的league结果具有相同的布局,联赛1中的league表与联赛2中的league表具有相同的模型
^ {
不幸的是,我还不熟悉Django框架,我以前使用过Flask和SQLAlchemy。对于这种组合,我可能对如何解决这个问题有一些想法,但对于这个项目,我正在考虑使用Django作为框架,而不是将松散的端点连接在一起,因为某些部分(权限,…)的完整性更好,而且看起来更全面
所以,我想问问社区,是否有人遇到过类似的挑战,以及如何解决
多谢各位,托马斯
为了满足您的需求(我认为您在pandas和django创建的两个表中都有类似的字段),首先创建一个抽象模型,然后在两个单独的模型中继承模型——一个是托管模型,另一个是非托管模型。Django ORM将负责托管模型的表创建和管理,pandas将负责非托管模型的表创建和管理。如果您允许,Django仍然可以访问和操作非托管模型的记录(默认情况下是允许的)。以下是一个很好的例子:
如果表有单独的定义,那么只需将pandas模型定义为您的需求,并在meta选项中设置
managed = False
。另外,不要忘记在实际表名中显式地提到db_table
选项(对于django和pandas模型)。有关modle meta选项的更多信息,请参阅文档页-https://docs.djangoproject.com/en/3.0/ref/models/options/
如果您的表驻留在不同的数据库上,也可以考虑以下^ https://docs.djangoproject.com/en/3.0/topics/db/multi-db/
相关问题 更多 >
编程相关推荐