我的Web应用程序允许用户在Postgres数据库中加载/创建表。我知道Django ORM需要models.py中的模型定义才能访问数据库中的每个表。每次上传新表时,如何在不创建新模型定义的情况下访问应用程序中用户上传的表格?我正在考虑创建一个通用模型定义,将表分解为其组件,如下所示:
models.py
class Table(models.Model):
filename = models.CharField(max_length=255)
class Attribute(models.Model):
table = models.ForeignKey(Table)
name = models.CharField(max_length=255)
type = models.IntegerField()
width = models.IntegerField()
precision = models.IntegerField()
class Row(models.Model):
table = models.ForeignKey(Table)
class AttributeValue(models.Model):
row = models.ForeignKey(Row)
attribute = models.ForeignKey(Attribute)
value = models.CharField(max_length=255, blank=True, null=True)
这种通用模型的问题是每个表都混合在4个表中(在管理界面中没用),当你有很多行时,它的创建速度很慢。你对这个案子有什么建议吗?
编辑:每次用户添加或删除表时,使用单独的数据库存储这些表并使用路由器和manage.py inspectdb
来更新其models.py是否可行? (like in this post)我想知道如果两个用户同时添加一个表会发生什么?
答案 0 :(得分:2)
您可能需要使用raw SQL queries来执行此操作。
如果您预期的表的架构是预定义的,则可以使用数据库路由器将某个模型链接到每个用户的特定表名。
答案 1 :(得分:2)