我正在尝试创建一个Web应用程序,允许用户创建“虚拟表”,每个虚拟表都有自己的行,列和数据。每个用户都可以CRUD他们自己的虚拟表(使用我试图用django-rest-framework构建的API),但他们不应该能够看到其他用户的表。
到目前为止,我对模型的第一次尝试看起来像这样:
class Vtable(models.Model):
user = models.ForeignKey(User)
table_name = models.CharField(max_length=200)
class Vcolumn(models.Model):
table = models.ForeignKey(Vtable)
column_name = models.CharField(max_length=200)
class Vrow(models.Model):
table = models.ForeignKey(Vtable)
added_date = models.DateTimeField('date added')
class Vdata(models.Model):
table = models.ForeignKey(Vtable)
row = models.ForeignKey(Vrow)
column = models.ForeignKey(Vcolumn)
data = models.CharField(max_length=200)
我刚刚完成了django-rest-framework的教程,现在我不确定是否有意义将所有内容规范化。有一个大桌子会更好吗?我想,实现序列化以及权限进入组合时会非常烦人。我是Django的新手,我正在寻找一些指导。
提前致谢!
答案 0 :(得分:1)
对于这类事情,您可能需要考虑将每组表数据存储在JSON字段中,而不是尝试将数据库表强制转换为他们不太适合的样式。
对表存储使用普通JSON字段可能适合也可能不适合,具体取决于您需要在表内执行哪种查找(如果有),以及它们包含多少数据,但它肯定更容易使用。
如果您需要确保某些单元格属于特定数据类型,您仍然可以使用REST框架的序列化程序或类似的方法对表格单元格中的数据实施约束。