Форум сайта python.su
gorynych0
Да японский бог, не надо никаких дополнительных таблиц, просто на основании имеющихся данных продаж дайте мне выборку по дням, когда продаж не было. Одна таблица. Один результат.
Офлайн
FishHook
Я удалил дополнительную таблицу. Итак, вот что я сумел написать для достижения нашей задачи:
def no_sellings(request): sells = [] for sell in Selling.objects.all(): if (sell.selling_date.day, sell.selling_date.month, sell.selling_date.year) not in sells: sells.append((sell.selling_date.day, sell.selling_date.month, sell.selling_date.year)) return HttpResponse(str(sells)
Вывод: [(26, 12, 2017), (27, 12, 2017), (11, 10, 2017)])
Отредактировано gorynych0 (Дек. 27, 2017 16:30:55)
Офлайн
gorynych0
Если серьёзно:
Я мог бы добавлять в 23:59 ежедневно, как день окончания дня ( для этого нужно создать отдельную таблицу days ), добавить логику в модель продажи, чтоб она изменяла значение there_is_selling в записи days, если продаж нету days в 23:59 записывалась как there_is_selling=False, если продажи были, то записывалась как there_is_selling=True, после, просто выводил бы записи с there_is_selling=False.
Только я не знаю как оптимизировать событие, что будет выполняться в 23:59, каждую минуту проверка на время? Мне кажется это глупо.
Итак, вот что я сумел написать для достижения нашей задачи:Очень, очень плохое решение. Ну представьте, у нас пять лет работы фирмы, в среднем сто продаж в день. Это примерно 200 000 записей. Когда вы делаете вот так
sells = [] .... for sell in Selling.objects.all(): ... if .... not in sells:
Офлайн
FishHook
Где вы возьмёте записи дней без продаж? Запись продажи проходит во время покупки пользователем товара. Про то, чтобы перекласть всю работу БД я подумал в первую очередь.
Офлайн
gorynych0
вы знаете что такое group by?
Офлайн
FishHook
Нет, я вроде говорил, что начинающий в back-end, бд знаю на базовом уровне ( создай таблицу, выведи столбец).
Офлайн
gorynych0
Вы получили ответ на свой изначальный вопрос?
Офлайн
FishHook
Можно сказать Да. Обработка информации на сервере.
Офлайн