<p><strong>首先,显然我希望每个用户都能跟踪自己的进度,而不是让任何其他用户看到它。</strong></p>
<p>在模板中,可以这样做</p>
<pre><code> User: {{ user.username }}
squats: {{ user.userprofile.squats }}
lunges: {{ user.userprofile.lunges }}
Skip Stairs:
{% if user.userprofile.skipStairs %}
Yes
{% else %}
No
{% endif %}
Stair: {{ user.userprofile.stairDaysCount }}}
Week Completed:
{% if user.userprofile.weekOneComplete %}
Yes
{% else %}
In-Progress
{% endif %}
</code></pre>
<p><strong>一旦定义了这种关系,如何访问每个用户的数据?例如,如果我想创建一个addShucks函数。</strong></p>
<p>要访问用户数据</p>
<pre><code>user = UserProfile(user=request.user)
user.weekOne.squats += 5
user.weekOne.save()
user.save()
</code></pre>
<p><strong>其次,每次用户更改进度(即,添加下蹲或弓箭步)时,我都要检查是否所有字段都符合某个基准。如果有,我想将weekOneComplete设置为true。</strong></p>
<p>在UserProfile模型下,创建check updates函数。你知道吗</p>
<pre><code>class UserProfile(models.Model):
user = models.OneToOneField(User)
weekOne = models.ForeignKey(WeekOne)
def check_updates(self):
check = WeekOne.object.get(id=self.weekOne)
if check.skipStairs and \
check.squats == 1000 and \
check.lunges == 250 and \
check.stairDaysCount == 3:
check.weekOneComplete = True
check.save()
</code></pre>
<p>因此,每次更新该用户的数据时,只需调用如下方法:</p>
<pre><code>user = UserProfile.objects.get(user=request.user)
user.check_updates()
</code></pre>