Привет!
Бекграунд: небольшой сервис на django парсит ресурсы, получает объекты, которые нужно отфильтровывать по разным критериям, последовательно, оставляя только подходящие. Ресурсов много, объектов на ресурсах много, критериев (фильтров) около 5-7.
Задача: захотелось вести детальный лог (а не просто в файле filter.log), чтобы можно было анализировать, по каким фильтрам в каких ресурсах чаще всего информация отфильтровывается и как часто.
Для этого была создана простая моделька:
class FilterHistory(models.Model):
created_at = models.DateTimeField(auto_now_add=True, editable=False)
source = models.ForeignKey(Source, on_delete=models.CASCADE, related_name='history')
filter_name = models.CharField(max_length=100, default='unknown')
filtered_number = models.IntegerField()
И после всей фильтрации по каждому фильтру сохранялась информация.
Проблема: анализировать трудно такое, так как не сохраняется изначальное количество объектов и не учитывается в логах (только по времени) порядок фильтров. Особенно в django admin. Я не могу придумать с ходу хорошее решение, чтобы оно удовлетворяло требованиям.
Я подумал, что должна быть ещё одна модель, которая содержит основную информацию по сессии фильтрации, связанная с моделями отдельных фильтров (one-to-many). Типа: History -> HistoryItems
Помогите, пожалуйста, ответить на вопрос:
не делаю ли я велосипед и правильно ли подхожу к решению?