如何为Django中的每个用户创建单独的数据库?

2024-04-20 13:44:59 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我是编程新手,目前正在学习Django。我知道这可能是个愚蠢的问题,但我似乎到处都找不到答案,我真的很想知道。你知道吗

我正在做一个篮球数据追踪器应用程序。它的工作原理是输入你在多少次尝试中得分的次数,并将其添加到当前的准确率百分比中。假设你上次5/10岁,现在35/90岁。然后百分比从50%上升到40%。它对我有用,但我想让人们可以注册。我知道如何做到这一点,但我如何使每个用户的统计个性化?你知道吗


Tags: 数据django答案用户应用程序编程次数原理
1条回答
网友
1楼 · 发布于 2024-04-20 13:44:59

为每个用户创建一个新的数据库并不是真正的数据库工作方式。你应该用表格来做这件事。你知道吗

默认情况下,Django中的每个模型都会获得一个名为“id”的字段,这是数据库用来区分不同条目的字段。你创建的每个用户都会得到一个新的id,第一个用户的id=1,第二个用户的id=2,依此类推。这些都存储在数据库的users表中。因此,每个想要跟踪其得分的用户都将在users表中获得自己的记录。这类表格的基本示例如下:

           
| id | name    | age |
           
| 1  | John    | 23  |
| 2  | Mitch   | 15  |
| 3  | Joe     | 33  |
...

实际上,Django为此使用了一种特殊的用户模型。默认情况下,Django使用特定的模型。更多关于here。考虑到您已经实现了身份验证,您应该能够很好地处理这个问题。现在,为了追踪用户的分数,你可以在你的应用程序中创建另一个类似“分数”的模型,这个模型可能如下所示:

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\u user\u model()”方法调用。这是一个跟踪大量用户的新模型。您可以通过执行Score.objects.create(user=request.user, tries=10, successful_tries=5)来创建一个。你的每一个训练课程都可以创建一个新的“分数”对象来跟踪你的尝试次数和成功的尝试次数。您可以使用request.user.scores.all()(相关的\u名称就是这样做的)来访问所有这些文件。这样,一个用户可以拥有0到无限个与其相关的“Score”对象。驻留在数据库的users表中的每个用户,以及驻留在数据库的scores表中的每个分数。你知道吗

如果这有点令人困惑,请查看this blogpost主题。数据库设计和设置域通常都是很重要的概念,如果您刚开始学习的话。你知道吗

相关问题 更多 >