所以我有一个django项目的以下模型结构
class RawData(models.Model):
user = models.ForeignKey(User)
timestamp = models.DateTimeField()
...
value = models.PositiveIntegerField()
class SummarizedData(models.Model):
SUMMARY_DURATION = (
('H', 'Hour'),
('D', 'Day'),
('M', 'Month'),
('Y', 'Year')
)
user = models.ForeignKey(User)
duration = models.CharField(max_length=1, choices=SUMMARY_DURATION)
timestamp = models.DateTimeField() #for keeping track of which duration's data is this
...
min_max_values = models.ManyToManyField(RawData)
现在我的问题与 min_max_values 有关。我只希望每个 SummarizedData 有 2 个 RawData 元组——一个对应于该持续时间内看到的最小 RawData 值,另一个对应于该值的最大值。
然而,由于一个特定的 RawData 元组可能是多个 SummarizedData 条目的最小值(例如给定小时、同一天等),我通过多对多关系将它们关联起来。但是我无法弄清楚如何识别与 SummarizedData 相关的 2 个 RawData 值中的哪个是最大值,哪个是最小值,除非我比较它们各自的值。所以到目前为止,我将在 SummarizedData 中使用 getMaxValue 和 getMinValue 等函数。
我的问题是,对于这种特定情况,是否有可能以某种方式在 SummarizedData 中包含两个字段,每个字段对应一个 RawData 字段?也许像这样?
min_value = models.OneToOneField(RawData)
max_value = models.OneToOneField(RawData)
还是我应该采用我的第一种方法?
已编辑
抱歉,我应该使用 ForeignKey 而不是 OneToOneField
min_value = models.ForeignKey(RawData)
max_value = models.ForeignKey(RawData)