Как я могу сгенерировать аннотированный набор запросов Django, который проверяет значение между строками в той же модели, которые также находятся в заданном диапазоне дат c? - PullRequest
0 голосов
/ 09 апреля 2020

В поисках каких-то указаний, поскольку я не добиваюсь прогресса после недели перехода между документацией Django для подзапросов, оконными функциями и десятками других ответов SO. У меня около 20 различных вариантов набора запросов, и ни один из них не дает правильных результатов.

ЧТО Я ИМЕЮ

TimestampedModel(models.Model):
    # Attributes
    label = CharField()
    timestamp = DatetimeField()

    # Relationships
    traits = ForeignKey('TraitModel')


TraitModel(models.Model):
   # Attributes
   value = IntegerField()

ЧТО Я ПЫТАЮСЬ DO

Я хотел бы аннотировать набор запросов TimestampedModel со счетчиком того, сколько других строк в определенном диапазоне дат соответствуют указанному порогу c. Говоря по-другому, я хочу обнаруживать всякий раз, когда для каждого объекта TimestampedModel происходит последовательное падение значений признаков для каждой из окружающих строк (на основе переменного диапазона дат вокруг каждой указанной строки c).

Более конкретный пример:

Day 1: 10 traits
Day 2: 11 traits
Day 3: 10 traits
Day 4: 13 traits
Day 5: 2 traits
Day 6: 3 traits
Day 7: 3 traits
Day 8: 11 traits
...

Я хочу выяснить, есть ли хотя бы X последовательных отметок времени, опускающихся ниже числа признаков Y. Используя приведенный выше пример, он обнаружит наличие 3 последовательных провалов ниже 4 признаков, но если я настрою последовательное окно на 5 дней, ничего не будет обнаружено.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Я понимаю, что вы могли бы сказать: "Ну, это глупый вопрос / почему бы вам не сделать это иначе"; это упрощенная реконструкция моей ситуации, которая, надеюсь, облегчит поиск решения, которое я могу адаптировать. Возможно, нет и придется добавить больше деталей, но я начинаю здесь

...