Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2015 16:03:17

Andrew82
Зарегистрирован: 2015-02-12
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Коллеги, подскажите, кто знает как лучше реализовать модель в Django для каталога компаний у которых могут быть филиалы:

Компания имеет основной адрес, телефон и т.д., для этого мы создаем примерно следующую модель:

class Company(models.Model):
    name...
    city...
    address...
    phone...

но компании могут иметь несколько филиалов в разных городах, либо же в одном городе.

сначала думал сделать 2 модели для компании и филиала
class Company(models.Model):
    name...
    city...
    address...
    phone...

class Filial(models.Model):
    name = models.ForeignKey(Company...
    city...
    address...
    phone...

Но может быть лучше сделать просто для
class Company(models.Model):
поле filial = models.BooleanField которое если 1 то это головной офис если 0 то филиал.

как наиболее оптимально связать данные в таблицах БД (и стоит ли вообще это делать через ForeignKey) главное чтоб и работало быстро и кодить было удобно? может посоветуете какие более оптимальные решения подойдут для этой задачи?

Отредактировано Andrew82 (Сен. 3, 2015 16:04:16)

Офлайн

#2 Сен. 3, 2015 16:36:02

i.slepov
Зарегистрирован: 2015-05-28
Сообщения: 53
Репутация: +  5  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Я быдлокодер, поэтому добавил бы в модель Company поле head_office, где указывал бы id - головной организации. Если в поле null - значит сама организация головная.

Плюсы: дешево, сердито, можно в noSQL данные положить вроде Mongo или даже Redis.
Минусы: сторонники N-ой нормальной формы тухлыми яйцами закидают, возможно будут проблемы при кривом импорте/экспорте данных (если забудем про поле id), при кривом удаление организаций (если забудем про поле head_office) данные в этом поле будут невалидны.

Офлайн

#3 Сен. 3, 2015 17:48:48

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Andrew82
стоит ли вообще это делать через ForeignKey
А почему не ManyToMany?



Офлайн

#4 Сен. 3, 2015 17:50:45

Andrew82
Зарегистрирован: 2015-02-12
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

FishHook
А почему не ManyToMany?
чтоб модели лишние не плодить

Офлайн

#5 Сен. 3, 2015 17:51:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Имеете в виду таблицы в БД? Модель то у вас как раз одна единственная будет. А они кушать просят что ли?



Отредактировано FishHook (Сен. 3, 2015 17:52:21)

Офлайн

#6 Сен. 4, 2015 10:59:05

Andrew82
Зарегистрирован: 2015-02-12
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

FishHook
ManyToMany
немного не пойму, что Вы предлагаете связать связью ManyToMany?

Офлайн

#7 Сен. 4, 2015 11:13:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Таблицу саму с собой, что такого?



Офлайн

#8 Сен. 4, 2015 11:16:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модель для компании с филиалами

Ну или FK таким же образом, зачем дополнительную модель то придумывать?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version