Selfjoin в Django для получения списка комбинаций и их количества
к сожалению, мне сейчас не хватает правильной идеи, поэтому я пробую свой первый пост здесь:
Моя модель:
class MyModel(models.Model):
interesting_value = PositiveIntegerField()
other_value2 = PositiveIntegerField()
other_value3 = PositiveIntegerField()
...
Теперь я хочу сделать что-то вроде этого в django:
with query as (select interesting_value, other_value2, other_value3 from mymodel)
select q1.interesting_value, q2.interesting_value, count(*) AS cnt from query q1
inner join query q2 on q1.other_value2 = q2.other_value2
and q1.other_value3 = q2.other_value3
and q1.interesting_value <> q2.interesting_value
and q1.interesting_value < q2.interesting_value
group by q1.interesting_value, q2.interesting_value;
Получить такой результат, который находит количество пар при заданных условиях:
q1.interesting_value, q2.interesting_value, cnt
1,4,2
1,9,3
1,38,1
1,100,1
Как я могу реализовать эту самосвязь в Django без использования чистого SQL в моем приложении?
Чтобы получить представление о вопросе, на который я хочу ответить, вот пример: Как часто комбинация из двух экзаменов (=интересное_значение) сдается одним студентом (=другое_значение2) в одном семестре (=другое_значение3)?
Буду очень благодарен за небольшую подсказку к решению!
Ян