我正在开发一个健身游戏的网络应用程序。这个想法是每个星期都有一定数量的任务,一个人必须在下一个星期被揭示之前完成。以下是我迄今为止应用程序的models.py
模式:
从django数据库导入模型 从django.contrib.auth公司.models导入用户
class WeekOne(models.Model):
squats = models.PositiveIntegerField()
lunges = models.PositiveIntegerField()
skipStairs = models.BooleanField()
stairDaysCount = models.PositiveSmallIntegerField()
# Set to true if (squats == 1000), (lunges == 250),
# (skipStairs is True), and (stairDaysCount == 3)
weekOneComplete = models.BooleanField()
class UserProfile(models.Model):
user = models.OneToOneField(User)
weekOne = models.ForeignKey(WeekOne)
我在几点上迷路了。首先,很明显,我希望每个用户都能跟踪自己的进度,而不是让任何其他用户都能看到。把weekOne
变成ForeignKey
是最好的方法吗?如果是这样,那么一旦定义了这种关系,访问每个用户的数据是如何工作的?例如,如果我想创建一个addSquats
函数,我会这样做:
user = UserProfile()
user.squats += 5
或者我需要做一些其他的魔术才能进入蹲场?你知道吗
第二,每次用户对其进度进行更改(即,添加下蹲或弓箭步)时,我都要检查是否所有字段都满足某个基准。如果有,我想把weekOneComplete
设为true。当用户单击一个按钮时,每一个添加都会被一些javascript触发——但是我应该把检查/更新数据库的函数放在哪里呢?你知道吗
关于第二个问题:一种可能的(简单的)方法是通过ajax调用,因为您说您使用的是javascript。你知道吗
它应该指向一个url,该url本身指向一个视图,该视图将处理您在请求中发送的数据。类似于(假设您使用的是POST请求):
这更像是伪代码的一部分,所以你明白了。您仍然需要在JS端编写ajax调用,这个模型方法将添加到正确的练习和验证基准测试中,并将用户保存到数据库中。例如:
此外,本例假设用户已通过身份验证。你知道吗
祝你好运。你知道吗
首先,显然我希望每个用户都能跟踪自己的进度,而不是让任何其他用户看到它。
在模板中,可以这样做
一旦定义了这种关系,如何访问每个用户的数据?例如,如果我想创建一个addShucks函数。
要访问用户数据
其次,每次用户更改进度(即,添加下蹲或弓箭步)时,我都要检查是否所有字段都符合某个基准。如果有,我想将weekOneComplete设置为true。
在UserProfile模型下,创建check updates函数。你知道吗
因此,每次更新该用户的数据时,只需调用如下方法:
要访问第一周的字段,您需要执行以下操作:
实际上,最好使用F函数并执行(或类似操作):
一般来说,最好在服务器端执行所有检查,而不是依赖于客户机(JS或其他什么)。例如,您公开一个url,并检查所有POST参数是否为整数(例如,转换为int)
相关问题 更多 >
编程相关推荐