【问题标题】:How to Model a Matrix Table in Django如何在 Django 中为矩阵表建模
【发布时间】:2019-07-12 21:28:40
【问题描述】:

在 Django ORM 中建模这个简单的表已经困扰了我一段时间。我想要的输出如下所示。

                item_a  item_b  item_d  item_d 
-----------------------------------------------
item_a            0       2       4      2.2
item_b            1       0       3.5    0.3
item_c            2       4       0      2
item_d            3.2     1       1      0

我的要求:

  • 项目之间的关系是一个类似上面的矩阵表。
  • 上表的每一行都可以编辑。
  • 还必须有添加新项目的可能性。

我遇到的最接近的事情是使用manytomany 关系。但在这个模型中,我的物品与它们自己有关系,这让我很困惑。

在 Django 模型中建模这种关系的方法是什么?

【问题讨论】:

  • 如果您在此处提供有关底层数据模型的更多信息,将会很有帮助。你想在这个矩阵中加入什么样的值?
  • 底层模型是我的问题。我不知道如何为这种表示建模。至于值,它们是浮点数。
  • 不,我的意思是你要建模的实际东西是什么。你有一个矩阵单元(item_a, item_a) = 0 这是什么意思?你想通过制作这个来解决什么问题?还是只是您想知道这样做的想法?您是否希望拥有一个可以通过网页编辑的任意大的nxn 单元格矩阵?这绝对可以做到,只是更多地了解问题有助于指导解决方案。
  • 此表表示项目之间的依赖比。 item_a 和 item_a 的依赖项为零。分析仪可以调整或编辑表格的值。这些值也用于另一个数学公式。我只是无法理解相应的 Django 数据模型。
  • 你能从如何计算抚养比开始说起吗?该计算的数据是什么样的?

标签: python django database-design


【解决方案1】:

假设您有另一个模型来定义哪些条目可以显示为矩阵中的行/列:

class Items(models.Model):
    name = models.TextField()

class DependencyRatio(models.Model):
    col = models.ForeignKey(Items, related_name='column_item')
    row = models.ForeignKey(Items, related_name='row_item')
    value = models.FloatField()

除了将矩阵表示为正方形之外,您还可以展开它并将其表示为标签对以及单元格值。

【讨论】:

  • 非常简单。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
相关资源
最近更新 更多