интересный вопрос.
Если бы я был на вашем месте, я бы исследовал, смогу ли я достичь того, что вы хотите сделать, используя представления базы данных (при условии, что вы используете Postgres). Особенно это звучит так, как будто вы ищите несколько таблиц, которые могут быть или не быть связаны между собой.
Проверьте этот драгоценный камень: https://github.com/scenic-views/scenic, чтобы получить представление о том, как вы можете реализовать представления, хотя вам не обязательно нужен драгоценный камень.
Тем не менее, я думаю, что это было бы хорошо для вас, потому что это позволило бы вам установить фильтр для данных, которые вы хотите, который затем вы могли бы фильтровать соответствующим образом, а затем просто сделать некоторый тест для проверки точности.
Надеюсь, это поможет!