Сижу вот думаю, возможно, поможете понять точнее.
В проекте есть 2 модели - клиенты и поставщики.
Сами по себе они довольно - адреса, телефоны, отзывы, история контактов и т.д., но есть ряд отличий по специальным полям(условно говоря, по 4 уникальных поля на каждый).
Но вот привязка их ролей к учету уже однозначно разнится - клиенты привязаны к головным заказам, поставщики - к подзаказам исходящим. Счета опять же разные, хранилища для файлов, допуски к работе и тд.
Есть привязка договоров, проверка заключения договора на момент оформления заказа/подзаказа и тд.
Разделить их на момент разработки казалось решением верным, так как редко одни и те же фирмы работали в 2х ролях.
С новым заказчиком немного поменялась ситуация - одни и те же компании исполняют что те, что другие роли. А вот учет по сделкам - строго раздельный, что неудобно для сводных отчетов.
Вот думаю, пока не поздно, что делать. Вижу 2 варианта:
- объединить модели в одну просто cо всеми полями + 2 BooleanField для клиента и поставщика, прописать менеджеры, массово заменить
ссылки на единую модель и т.д.
- модели не объединять, а создавать дубль
компании при внесении в базу первом, связывать их OneToOne и следить
за обновлением общих полей при save()
За вариант 1 говорит вроде как будущее(новые отчеты удобнее будет делать), за вариант 2 - прошлое(не нужно патчить вьюхи и FK с всегдашним вариантом где-то что-то пропустить).
Как вы считаете, что правильнее?
Updated 13 Aug. 2014, 21:55 by Ski.