Size: a a a

Django [ru] #STAY HOME

2019 October 31

YK

Yegor Kowalew in Django [ru] #STAY HOME
Дядьки, помогите пожалуйста сообразить модели.
Есть модель заказа. В ней есть даты по плану. Я туда еще пихнул и дату по факту, но мне кажется это лишнее. Хотя если подумать, мне кажется что лучше раз записать дату по факту в модель чем каждый раз высчитывать.
Что именно высчитывать. Есть шесть-семь файлов екселевских. Где указан номер заказа и дата по факту. Для чего это задумано. Есть заказ есть операторы, каждый оператор на заказ может поставить дату по факту, дальше автоматически должна высчитываться крайняя дата по факту. Тоесть в модели заказа должна быть самая поздняя дата по факту для этого заказа из шести-семи файлов.
Вобщем первый вопрос, хранить ли дату по факту в модели или каждый раз высчитывать?
С учетом того что за год получилось 1500 этих заказов. В шести файлах тоже в каждом по 1500 строок. Дат по плану и по факту пять штук.
источник

e

e\/gen in Django [ru] #STAY HOME
чтобы хранить максимальную дату её всё равно придётся рассчитывать при добавлении файла в заказ, если всё правильно понял
источник

А

Алексей in Django [ru] #STAY HOME
Yegor Kowalew
Дядьки, помогите пожалуйста сообразить модели.
Есть модель заказа. В ней есть даты по плану. Я туда еще пихнул и дату по факту, но мне кажется это лишнее. Хотя если подумать, мне кажется что лучше раз записать дату по факту в модель чем каждый раз высчитывать.
Что именно высчитывать. Есть шесть-семь файлов екселевских. Где указан номер заказа и дата по факту. Для чего это задумано. Есть заказ есть операторы, каждый оператор на заказ может поставить дату по факту, дальше автоматически должна высчитываться крайняя дата по факту. Тоесть в модели заказа должна быть самая поздняя дата по факту для этого заказа из шести-семи файлов.
Вобщем первый вопрос, хранить ли дату по факту в модели или каждый раз высчитывать?
С учетом того что за год получилось 1500 этих заказов. В шести файлах тоже в каждом по 1500 строок. Дат по плану и по факту пять штук.
высчитывать - это каждый раз парсить вот эти экселевские файлы?
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
Алексей
высчитывать - это каждый раз парсить вот эти экселевские файлы?
хочу спарсивать изменения в файлах после модификации файла или по расписанию и ложить в БД
Но даже если оно будет лежать в БД, При выборке всех заказов это нужно будет очень крепко поковырять базу чтоб дополнить модель заказов датами по факту
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
e\/gen
чтобы хранить максимальную дату её всё равно придётся рассчитывать при добавлении файла в заказ, если всё правильно понял
Да, надо будет. Но не расчитывать а находить крайнюю среди шести операторов
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
Но мне кажется что было бы правильнее при парсинге файла делать этот расчет и обновлять модель заказа, чем каждый раз при выводе модели заказов искать эту крайнюю дату
источник

e

e\/gen in Django [ru] #STAY HOME
Yegor Kowalew
Да, надо будет. Но не расчитывать а находить крайнюю среди шести операторов
ну энивей что она есть в базе, что её нет, почти ничего не меняется
источник

А

Алексей in Django [ru] #STAY HOME
Yegor Kowalew
хочу спарсивать изменения в файлах после модификации файла или по расписанию и ложить в БД
Но даже если оно будет лежать в БД, При выборке всех заказов это нужно будет очень крепко поковырять базу чтоб дополнить модель заказов датами по факту
а че там ковырять, у тебя там миллионы записей будут? на datetime еще index повесь и на компанию или че там у тебя еще в выборке будет
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
тыыыкс, более практично берем.
есть заказ. у него есть поле дата по плану.
Есть модель документ который фк на заказ
Теперь считаем, у заказа пять дат по плану, то-есть дата по плану на комплектовочную документацию, дата по плану на отгрузочную документацию и тд
на каждую дату по плану шесть операторов ставят свою дату. 6*5=30 дат. Это только на один заказ. За год 1500 заказов. 1500*30=45000 дат
источник

M

MIKS in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
некоторые системы code review типа Upsouse позволяют ревьювить по коммитам, а не весь PR сразу
Спасибо за интересный инструмент. Он в виде плагина еще есть к другим продуктам от JetBrains
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
Теперь допустим я хочу вывести все 1500 заказов, Идем циклом, берем первый заказ, делаем выбрку с фильтром по заказу и по нужной нам дате, получаем шесть дат операторов, среди них находим самую последнюю, потом берем вторую дату по плану, опять запрос с фильтром опять находим самую последнюю и так пять раз, чтоб на один заказ выбрать нужные даты по факту. Потом среди этих дат по плану и дат по факту надо провести арифметические действия, найти разницу дат и получить количество дней на сколько просрочили документы.
Не сильно ли долго это будет происходить?
источник

e

e\/gen in Django [ru] #STAY HOME
мне представлялось проще)
что етсь 6  или сколько там дат, они списком и от них max()
источник

YK

Yegor Kowalew in Django [ru] #STAY HOME
Вы скажете во вьюшке ведь можно выбрать одним запросом все даты и потом с ними играться. Согласен. Можно. А потом я еще и рест сюда прилеплю и тоже буду это высчитывать а потом еще какую фигню. Не проще ли при обновлении файла сразу сунуть дату по факту в модель. Да, получается по хорошему при парсинге каждого файла нужно будет перековыривать всю базу и проставлять все даты (или почти все) по факту. Но файлы операторов будут обновляться не часто. Раз в день, может два. А если еще замутить тему, которая будет парсить только те файлы, которые действительно поменялись, так это же вообще будет песня.
И вся арифметика при выводе пропадает автоматом
источник

F

Fred in Django [ru] #STAY HOME
ребят вопрос по орму нужно сранить каунт appointment_referrals и appointment_referrals__statuses='SHOW'
https://pastebin.com/BMzTxBT3 ну это все в фильтре было
источник

A

Andrey in Django [ru] #STAY HOME
Ефим
Помогите пожалуйста установить связь один к одному Не могу никак понять логику.
и много степов будет?
источник

A

Andrey in Django [ru] #STAY HOME
модет стоит про нормализацию почитать хотя бы для начала, прежде чем за такие вещи браться?
источник

A

Andrey in Django [ru] #STAY HOME
не нужно связи по FK делать
источник

F

Fred in Django [ru] #STAY HOME
https://pastebin.com/MaVrhKmY Попробывал сделать фильтр чере анотейты но что-то мне подсказывает это делатся не так
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Fred
https://pastebin.com/MaVrhKmY Попробывал сделать фильтр чере анотейты но что-то мне подсказывает это делатся не так
так не пойдет

.filter(cnt_doc_appointment_cases=cnt_doc_appointment_cases_statuses)

попробуй
.filter(cnt_doc_appointment_cases=F('cnt_doc_appointment_cases_statuses'))

но не уверен что получится
источник

DT

Dan Tyan in Django [ru] #STAY HOME
там скорее всего надо через Subquery делать
источник