我的 Web 应用程序允许用户在 Postgres 数据库中加载/创建表。我知道 Django ORM 需要在 models.py 中为数据库中的每个表定义模型才能访问它。如何在每次上传新表时访问用户在应用程序中上传的表,而无需即时创建新的模型定义?我正在考虑创建一个通用模型定义,将表分解为其组件,如下所示:
模型.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 是否可行?(就像在这篇文章中一样)我想知道如果两个用户同时添加一个表会发生什么?