Мне нужно некоторое мнение о том, как лучше всего разработать решение, специально разработанное для системы отслеживания запасов, которая работает в региональных магазинах. Я просмотрел много документов, но мне кажется, что ничего не работает. Поэтому мне нужно мнение эксперта.
Вот мой пример использования: я создаю систему отслеживания запасов для клиента с несколькими физическими магазинами, которые определены в разных регионах. В каждом магазине есть несколько отделов, поэтому у меня есть следующие модели:
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 содержит информацию о назначении пользователя различным местоположениям. Пользователь может иметь несколько назначений магазинов, но может иметь только одно основное назначение.
Существуют также модели поставщиков и запасов, но сейчас мне нужна помощь в загрузке дерева местоположений и последующих назначений пользователей.
Теперь у меня есть следующие проблемы с дизайном, которые я не могу обойти, как лучше всего их проектировать:
- Когда пользователь входит в систему, тогда пользователь должен будет войти в свое основное местоположение. , Итак, я отправил идентификатор местоположения как часть сеансов, но я не уверен, что это правильный способ сделать это. Как я хочу загрузить вид по умолчанию, назначенный этой организации. Итак, является ли подход сессионным подходом для добавления идентификатора местоположения?
- Как я могу загрузить все дерево расположений, чтобы, когда пользователь работает с запасами, он всегда использовал выбранную организацию (по умолчанию основное местоположение пользователя)? Должно ли это быть как загрузка промежуточного программного обеспечения, так и аутентификация?
- Когда пользователь регионального менеджера входит в систему, я хочу убедиться, что панель управления для регионального менеджера загружается, что может иметь несколько данных хранилища в соответствии с назначением местоположения регионального менеджера. Поэтому я должен сделать контекстный процесс для шаблона, чтобы просмотреть инвентарь в каждом регионе.
Если есть более простой способ создать это, пожалуйста, дайте мне знать или порекомендуйте мне какой-нибудь указатель.
Извините, если я задал слишком много вопросов, но я немного запутался в том, как использовать различные функции Django для решения моей проблемы.
Действительно признателен за вашу помощь.