显示动态更新的数量但存储旧版本
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 将要添加到数据库中的条目
我正在为一个农民开发一个网络应用程序,更准确地说,是一个永久耕作机。这意味着他正在处理各种种子和植物。该应用程序的目的是将有关他的花园的数据存储在数据库中。一旦收集到足够的数据,应用程序将提供一个框架来分析数据。
目前我正在开发第一个功能:将数据存储在数据库中并在网页上显示它们。
下面重点说本题的正题。
花园里有几块田地。一块田地可以包含多种植物。植物在一段时间内可以有多种状态(种子、植物、花朵、收获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 将要添加到数据库中的条目