Создание новой базы данных для каждого пользователя не совсем то, как работают базы данных. Вы должны сделать это, используя таблицы.
Каждая модель в Django по умолчанию получает поле с именем 'id', которое базы данных используют для различения разных записей. Каждый пользователь, которого вы создаете, получает новый идентификатор. Таким образом, первый пользователь получает id = 1, второй пользователь получает id = 2 и так далее. Все они хранятся в базе данных в таблице пользователей. Таким образом, каждый пользователь, который хочет отслеживать свои результаты, получит свою собственную запись в таблице пользователей. Базовый пример того, как будет выглядеть такая таблица:
----------------------
| id | name | age |
----------------------
| 1 | John | 23 |
| 2 | Mitch | 15 |
| 3 | Joe | 33 |
...
В действительности, Django использует для этого специальную модель пользователя. По умолчанию у Django есть конкретная модель, которую он использует. Подробнее об этом здесь . Учитывая, что вы уже внедрили аутентификацию, вы должны с этим справиться. Теперь, чтобы отслеживать оценки пользователей, вы можете создать в своем приложении другую модель, которая называется что-то вроде «Оценка» и может выглядеть примерно так:
from django.contrib.auth import get_user_model
from django.db import models
class Score(models.Model):
user = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name='scores',
)
tries = models.PositiveSmallIntegerField()
successful_tries = models.PositiveSmallIntegerField()
Что-то в этом роде. На этом этапе не обращайте внимания на вызов метода get_user_model (). Это новая модель, которая отслеживает множество пользователей. Вы можете создать его, выполнив Score.objects.create(user=request.user, tries=10, successful_tries=5)
. На каждой тренировке вы можете создавать новый объект «Оценка», который отслеживает, сколько попыток у вас было, и сколько было успешных попыток. Вы можете получить доступ ко всем из них, используя request.user.scores.all()
(это то, что делает related_name). Таким образом, один пользователь может иметь от 0 до бесконечного количества объектов «Score», с которыми он связан. Каждый пользователь, находящийся в таблице пользователей вашей базы данных, и каждый счет, находящийся в таблице результатов базы данных.
Если это немного сбивает с толку, ознакомьтесь с этим постом по этой теме. Дизайн базы данных и настройка вашего домена в целом являются важными понятиями, которые необходимо изучить, если вы только начинаете.