Запрос на редактирование элемента в дизайне базы данных - PullRequest
0 голосов
/ 07 сентября 2018

Я разрабатываю простое приложение CRUD в Django.Приложение позволяет пользователям управлять списком предметов.Предположим, что один элемент в базе данных состоит из следующих полей:

  • ID
  • Имя
  • Тип
  • Описание
  • Assigned_to(worker_id)

Помимо этого есть два типа пользователей - менеджеры и работники.Менеджеры могут свободно видеть / добавлять / редактировать / удалять / назначать все элементы.Работник может видеть все элементы, но любое внесенное изменение (добавление / редактирование / отмена назначения) должно быть принято менеджером.

Вот проблема.Интересно, что может быть лучшим способом для реализации этого требования.Я придумал простую систему «тикетов» - каждый раз, когда работник отправляет запрос на редактирование, тикет создается и может быть просмотрен менеджером позже.Билетом будет простой объект со следующими полями:

  • Тип (добавить, изменить, отменить назначение)
  • Новый идентификатор элемента (в случае операции добавления, редактирования)
  • Идентификатор старого элемента (в случае операции редактирования)

Наряду с тикетом будет создан новый элемент (со всеми внесенными изменениями и дополнительным полем is_active, установленным в False).Когда менеджер принимает тикет, это происходит следующим образом:

  • Операция добавления - is_active установлен в значение True
  • Операция редактирования - все поля из нового элемента перезаписываются на старый элемент и новый элементудален
  • Операция отмены назначения - для полей assign_to установлено значение Null

Часть, которая меня беспокоит, это, конечно, операция редактирования.Переписать все поля кажется хакерским / грязным способом сделать это (особенно, если я хотел бы добавить отношения m2m к Item).У тебя есть идея получше?

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