class FirstModel(Model):
...
class SecondModel(Model):
first_model= ForeignKey(FirstModel, related_name = 'second_model')
user = ForeignKey(User, related_name = 'second_model')
is_exist = NullBooleanField()
timestamp = DateTimeField()
Т.е. в итоге должен получиться список:
fm1 (10, 453, 12)
fm2 (650, 413, 7)
fm3 (153, 74, 89)
fm4 (132, 951, 82)
…
где fmN - это FirstModel, три цифры в скобках соответственно сколько SecondModel'ов ссылающихся на этот fm имют значение is_exist соответственно True/None/False.
Причём стоит отметить, что на один FirstModel ссылаются достаточно много SecondModel'ов (сотни), поэтому очень желательно сделать обработку минимальным количеством запросов. Плюс при отображении используется пагинация, т.е. за раз будет отображаться только 10-20 FirstModel'ов.
Писать сырые запросы очень бы не хотелось.
Для формирования списка без сортировки конечно можно использовать:
FirstModel.objects.filter(second_model__user = user).distinct()
FirstModel.objects.filter(second_model__user = user).order_by('-second_model__timestamp').distinct()
Есть ли у вас идеи как решать данную задачу? Буду благодарен за любую помощь.