Я не думаю, что это плохая идея запрашивать каждую модель отдельно - на самом деле, с точки зрения базы данных, я не понимаю, как вы могли бы поступить иначе, так как каждая модель будет нуждаться в отдельном запросе SQL , Даже если, как предлагает @Nagaraj, вы устанавливаете общую модель Date для всех других ссылок на модели, вам все равно придется запрашивать каждую модель отдельно. Вы, вероятно, правы, однако, что помещать результаты в список - это плохая практика, если только вам не нужно загружать каждый объект в память, как объяснено здесь :
Имейте в виду, однако, что [оценка QuerySet как списка] может иметь большие накладные расходы памяти, потому что Django загрузит каждый элемент списка в память. Напротив, итерация по QuerySet будет использовать вашу базу данных для загрузки данных и создания экземпляров объектов только тогда, когда они вам нужны.
Трудно предложить другие варианты, не зная больше о вашем сценарии использования. Тем не менее, я думаю, что я, вероятно, подхожу к этому, создав список или словарь QuerySets, которые я мог бы затем использовать в своем представлении, например ::10000*.
querysets = [cls.objects.filter(date=now) for cls in [Model1, Model2, Model3]]