Как внедрить систему отслеживания нескольких магазинов Django - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужно некоторое мнение о том, как лучше всего разработать решение, специально разработанное для системы отслеживания запасов, которая работает в региональных магазинах. Я просмотрел много документов, но мне кажется, что ничего не работает. Поэтому мне нужно мнение эксперта.

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

class Location(models.Model):
    LocId = models.AutoField(primary_key=True)
    Name = models.CharField(max_length=100)
    ShortName = models.CharField (max_length=25)
    Address = models.TextField(null=True)
    IsPhysicalLoc = models.BooleanField(default=False)

class LocationParent(models.Model):
    LocParentId = models.AutoField(primary_key=True)
    LocId = models.ForeignKey(Location, on_delete=models.CASCADE, db_column="LocId")
    ParentId = models.ForeignKey(Location, on_delete=models.CASCADE, db_column="LocId")

Модель местоположения содержит всю информацию о местоположении. Это обычная модель, которая хранит информацию о физическом местоположении, а также о местонахождении региона. Пример: Регион = Западное побережье, а магазин находится в Голливуде. Тогда он будет иметь две записи: для региона он будет определяться как: Name = WestCoast Region, ShortName: West Coast, Address: Empty, IsPhysicalLoc = False (предполагается, что LocId = 1) для физического хранилища: Name = 1 Hollywood; Сокращенное наименование = 1 Голливуд; Адрес: ; IsPhysicalLoc = True. (при условии, что LocId = 3)

Таблица LocationParent будет содержать родительские дочерние отношения между родительским и дочерним хранилищем, поэтому в приведенном выше примере запись будет вставлена ​​как LocId = 3; ParentId = 1 (LocParentId = 1).

class Department(models.Model):
    DepId = models.AutoField(primary_key=True)
    Name = models.CharField(max_length=100)

class DepartmentLocation(models.Model):
    DepLocId = models.AutoField(primary_key=True)
    DepId = models.ForeignKey(Department, on_delete=models.CASCADE, db_colum="DepId")
    LocId = models.ForeignKey(Location, on_delete=models.CASCADE, db_column="LocId")

Таблица отделов будет содержать всю различную информацию об отделах, которая прикреплена к каждому физическому расположению.

DepartmentLocation будет содержать информацию обо всех отделах по местоположению.

class UserLocation(models.Model):
    UserLocId = models.AutoField(primary_key=True)
    UserId = model.ForeignKey(Department, on_delete=models.CASCADE, db_colum="UserId")
    LocId = models.ForeignKey(Location, on_delete=models.CASCADE, db_column="LocId")
    IsPrimary = models.BooleanField(default=False)

Таблица UserLocation содержит информацию о назначении пользователя различным местоположениям. Пользователь может иметь несколько назначений магазинов, но может иметь только одно основное назначение.

Существуют также модели поставщиков и запасов, но сейчас мне нужна помощь в загрузке дерева местоположений и последующих назначений пользователей.

Теперь у меня есть следующие проблемы с дизайном, которые я не могу обойти, как лучше всего их проектировать:

  1. Когда пользователь входит в систему, тогда пользователь должен будет войти в свое основное местоположение. , Итак, я отправил идентификатор местоположения как часть сеансов, но я не уверен, что это правильный способ сделать это. Как я хочу загрузить вид по умолчанию, назначенный этой организации. Итак, является ли подход сессионным подходом для добавления идентификатора местоположения?
  2. Как я могу загрузить все дерево расположений, чтобы, когда пользователь работает с запасами, он всегда использовал выбранную организацию (по умолчанию основное местоположение пользователя)? Должно ли это быть как загрузка промежуточного программного обеспечения, так и аутентификация?
  3. Когда пользователь регионального менеджера входит в систему, я хочу убедиться, что панель управления для регионального менеджера загружается, что может иметь несколько данных хранилища в соответствии с назначением местоположения регионального менеджера. Поэтому я должен сделать контекстный процесс для шаблона, чтобы просмотреть инвентарь в каждом регионе.

Если есть более простой способ создать это, пожалуйста, дайте мне знать или порекомендуйте мне какой-нибудь указатель.

Извините, если я задал слишком много вопросов, но я немного запутался в том, как использовать различные функции Django для решения моей проблемы.

Действительно признателен за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...