だから私は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タプルが必要です。1つはその期間に表示される最小のRawData値に対応し、もう1つはそのような最大値に対応します。
ただし、特定のRawDataタプルが複数のSummarizedDataエントリの最小値になる可能性があるため(たとえば、特定の時間、同じ日など)、多対多の関係を介してそれらを関連付けました。しかし、それぞれの値を比較しない限り、SummarizedDataに関連する2つのRawData値のどちらが最大で、どちらが最小であるかを識別する方法を理解できません。したがって、今のところ、getMaxValueやgetMinValueなどの関数をSummarizedDataに含めることにします。
私の質問は、そのような特定のケースでは、SummarizedDataにそれぞれが単一のRawDataフィールドに対応する2つのフィールドを含めることはできないのでしょうか?多分このように?
min_value = models.OneToOneField(RawData)
max_value = models.OneToOneField(RawData)
それとも、最初のアプローチを採用する必要がありますか?
編集済み
申し訳ありませんが、OneToOneFieldの代わりにForeignKeyを使用する必要がありました
min_value = models.ForeignKey(RawData)
max_value = models.ForeignKey(RawData)