Сохранить прогресс или действия пользователя в django?

У меня есть серьезное задание, которое должно быть выполнено пользователями при регистрации! Как отследить это? На данный момент я проверяю, существуют ли данные более чем в 5 таблицах (например, адрес, образование и т.д.). Я думаю, что это не лучший способ сделать это! Поскольку когда пользователь входит в систему, мне нужно проверить, выполнил ли он все основные задачи, а затем позволить ему делать другие вещи...

Проведя исследование, у меня есть несколько вариантов:

Option1: Create a new model and store all progress on each row 
and then fetch all the rows to check if required is completed.

Option2: Create a new model and store the finished actions in a array, for instace:

Class Actions:
      owner = models.ForeignKey(User, on_delete=models.CASCADE)
      actions = ArrayField(models.CharField(max_length=128))

And with these, i can append all the finished task one by one, like {emailverification,
personal_details,education_details} etc

And then use the above to work on the conditions

Я думаю, что второй вариант более эффективен, так как он просто берет одну строку из таблицы, а не берет несколько строк!

Или, пожалуйста, предложите какой-либо новый вариант для отслеживания этого!

добавьте json-поле в модель и сбрасывайте в него действия пользователя. плюс используйте "from django_extensions.db.fields.json import JSONField" вместо "models.JSONField", потому что он не очень хорошо работает с SQL

  1. Action - имя модели должно быть в единственном числе
  2. Я бы использовал BooleanField в модели User, чтобы не делать другие селекты, если он уже закончил все шаги, и вы можете сделать просто:
if not request.user.finished_all_steps:
  # select from Action and let him finish it
  pass

и тогда все зависит от вас, хотите ли вы использовать Action.actions как JSONField, или вы делаете строку для каждого действия

Вернуться на верх