显示动态更新的数量但存储旧版本

Display a dynamically updated quantity BUT store the older versions

我正在为一个农民开发一个网络应用程序,更准确地说,是一个永久耕作机。这意味着他正在处理各种种子和植物。该应用程序的目的是将有关他的花园的数据存储在数据库中。一旦收集到足够的数据,应用程序将提供一个框架来分析数据。

目前我正在开发第一个功能:将数据存储在数据库中并在网页上显示它们。

下面重点说本题的正题。

花园里有几块田地。一块田地可以包含多种植物。植物在一段时间内可以有多种状态(种子、植物、花朵、收获table)。

当植物达到一个状态时,我们需要存储特定的信息:

到目前为止一切顺利,没什么特别的。

现在植物可以在一块田地里生长直到达到特定状态,然后种植到另一块田地直到收获。

例如,3号盘中的12根胡萝卜,从种子到发芽状态。

在发芽状态,2根胡萝卜没有发芽。农民现在打算不在托盘 n°3 而是在田地 n°1

继续种植他的胡萝卜

在模型中,假设“state_plant_table”您有 2 个条目:

胡萝卜 - 12 - 种子 - 托盘 n°3 胡萝卜 - 10 - 胚芽 - 田地 n°1

您可能会看到它的到来。

现在假设...第 1 号田地没有足够的空间放 10 根胡萝卜,只能放 8 根。所以他只是把剩下的 2 个放在一边 - 第 2 个字段。

我们现在有 胡萝卜 - 12 - 种子 - 托盘 n°3 胡萝卜 - 8 - 胚芽 - 田地 n°1 胡萝卜 - 2 - 胚芽 - 田地 n°2

现在,在显示屏上我们会为每个字段、托盘或 w/e 显示 HTML table。当你点击一块田地时,你会看到植根于其中的每一种植物的详细信息。

对于字段 n°1,我们将有: 胡萝卜 - 8

对于字段 n°2,我们将有: 胡萝卜 - 2

而且,不幸的是,对于托盘 n°3,我们会: 胡萝卜 - 12 但是我们应该有 0(当然如果 0 => 从显示中排除)。

我现在正在为我的流程的理论设计而苦苦挣扎...欢迎任何提示、暗示和建议!

我考虑过“父”数量和“子”数量,其中初始数量将存储在“plant_table”中,因为“父”数量和“子”数量将存储在“ state_plant_table" - 与植物本身相比,数量更多地与观察到的状态有关。

我觉得这是正确的方法,但我也无法将推理推到尽头。

用“parent”和“children”推理是正确的方法之一。

实际上有3种性质的数量可以存储:

  • 在特定状态下观察到的植物数量(quantite_etat)
  • 田间实际植物数量(数量)
  • 同一植物的数量 parent (quantite_lot)
models.py

class EtatLot(models.Model):
    id = models.AutoField(primary_key = True)
    id_lot = models.ForeignKey('Lot', on_delete = models.PROTECT, verbose_name = 'Lot', related_name = 'lot_parent', null = True, blank = True)
    etat = models.CharField(verbose_name = 'État', max_length = 50, null = True, blank = True)
    quantite = models.PositiveSmallIntegerField(verbose_name = 'Quantité', null = True, blank = True)
    quantite_etat = models.PositiveSmallIntegerField(verbose_name = 'Quantité relatée', null = True, blank = True)

class Lot(models.Model):
    id = models.AutoField(primary_key = True)
    quantite_lot = models.PositiveSmallIntegerField(verbose_name = 'Quantité', null = True, blank = True)

显示的数量是quantite中的数量。用于分析数据的数量是来自quantite_etat.

的数量

例子

假设我们在 n°1 的田地里种了 12 棵花椰菜,农民想在 n°2 的田地里种 10 棵。

在数据库中我们有:

Lot table
id : 1   quantite_lot : 12


EtatLot table
id : 1   id_lot : 1   etat : Seed   quantite : 12   quantite_etat : 12
id : 2   id_lot : 1   etat : Germ   quantite : 12   quantite_etat : 12

在操作结束时,我们应该有这个:

Lot table
id : 1   quantite_lot : 2


EtatLot table
id : 1   id_lot : 1   etat : Seed   quantite : 12   quantite_etat : 12   field : fieldn°1
id : 2   id_lot : 1   etat : Germ   quantite :  2   quantite_etat : 12   field : fieldn°1
id : 3   id_lot : 1   etat : Plan   quantite : 10   quantite_etat : 10   field : fieldn°2

对于这个操作,quantite_lot是无关紧要的。但是我存储它是为了做一些库存检查:你不能种植更多的植物。

这就是我达到上述 table 的方法:

  • 获取 lot_parent 的最后 child 的数量(数量)
  • 更新此值与表格中农民增加的值之间的差值,更新parent中quantite_lot的值
  • 将表单的值存储在 quantite 中,quantite_etat 将要添加到数据库中的条目