python - 根据另一个模型中的字段填充一个模型的两个字段
问题描述
我有以下型号
from django.db import models
class Program(models.Model):
title = models.CharField(max_length=190)
block_time = models.TimeField(default="00:00:00")
block_time_delta = models.DurationField(default="00:00:00")
running_time = models.TimeField(default="00:00:00")
running_time_delta = models.DurationField(default="00:00:00")
remaining_time = models.TimeField(default="00:00:00")
remaining_time_delta = models.DurationField(default="00:00:00")
def __str__(self):
return f"{self.pk} : {self.title}"
class Segment(models.Model):
program_id = models.ForeignKey(Program,
on_delete=models.CASCADE,
related_name='segments', #new link to Program
)
sequence_number = models.DecimalField(decimal_places=2,max_digits=6,default="0.00")
title = models.CharField(max_length=190)
length_time = models.TimeField(null=True,default=None, blank=True)
length_time_delta = models.DurationField(default="00:00:00")
def __str__(self):
return f"{self.title}"
创建程序的表格将允许您输入一个块时间,但其他时间是根据段计算的。表单将具有程序创建/更新功能,段表单将具有程序信息以及在其上添加一个或多个段的能力。
所以,如果我有一个一小时长的程序(block_time = 1 小时),两个段是 28 分钟,那么在程序屏幕上,持续时间将为 1 小时,运行时间 56:00 分钟(计算),并且剩余时间 4 分钟(计算)。注意在程序创建时用户只输入块时间,所以一开始剩余时间和运行时间将为零,因为还没有创建段。
Segment section(s) 不仅有段的长度,还有两个计算字段——从第一个段开始到当前段的运行时间,以及剩余时间(基于块时间)。所以在上面的例子中。段号 段时间 运行时间 剩余时间
1 28:00 28:00 32:00
2 28:00 56:00 04:00
我被困在如何对这些视图/表单进行编码,以便在有人进入新段时进行计算。它也可以超过持续时间,如果是这样 - 将剩余时间显示为负值,包括在段和程序剩余时间值中。我在模型中包含了 Duration 字段和 Time 字段,认为如果我以两种方式存储它们会更容易显示它们......
任何定向帮助将不胜感激。
解决方案
推荐阅读
- python - 帧大小问题 cv2.videocapture
- python - 无法使用 Selenium 包提取属性
- python - 将年份和月份的 Stacked DataFrame 转换为具有日期时间索引的 DataFrame
- python-3.x - 从嵌套字典创建数据框
- excel - 在文件夹中搜索与 Excel 范围内不同字符串匹配的文件
- sql-server - 交叉加入事实和维度
- python - 在 python 中查找幻数
- linux - 脚本:检测操作系统是 x32 还是 x64 位并下载最新的 Oracle Java JDK 8
- mongodb - { useUnifiedTopology: true } Pass 已弃用
- r - 美国各州 shapefile 的 R geom_point vs geom_line vs geom_path