Django - 在模板中使用函数



我正在尝试弄清楚如何为我的用户创建一个进度跟踪器,以便他们可以看到他们填写的表单的百分比。

我不确定如何创建函数,然后在模板中使用它/调用它。

视图 - 计算进度功能

我在类中的函数目前看起来像这样(我故意排除了类中的表单以避免混乱(:

class OpdaterEvalView(ModelFormMixin, DetailView):
template_name = 'evalsys/evalueringer/evaluering_forside.html'
model = Evaluation
form_class = OpdaterEvalForm
def calculate_progress(self, evaluation=None):
value = [evaluation.communication, evaluation.motivate_others,
evaluation.development, evaluation.cooperation]
count = 0
if value[0]:
count += 1
if value[1]:
count += 1
if value[2]:
count += 1
if value[3]:
count += 1
return count * 25

这个想法是,它将检查数据库中存在值的数组,如果存在 0,1,2,3 个值,则将显示 25%、50%、75%、100%。我只是真的不知道如何使此功能在我的模板中工作?我怎么称呼它?也许函数在类之外?但是,我如何定位评估的特定 pk。

更新 - 更多信息

我有一个评估模型,以及一个名为"关系"的模型窗体,其中我有四个值:

value = [evaluation.eval_relations.communication, evaluation.eval_relations. motivate_others,
evaluation.eval_relations.development, evaluation.eval_relations.cooperation]

我有一个名为 eval_relations 的评估模型的外键。

以下是我的假设:

用户模型

具有 5 个字段(f1、f2、f3、f4、f5(和具有用户模型的一对一字段的配置文件模型。

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_name')
f1 = ...
.
.

表单中将有 5 个字段。我们要显示数据库中保存了多少字段。

当用户首次打开表单时(当配置文件模型中未保存任何数据时(,将显示已完成 0%。

如果用户之前保存了 3 个字段,它将显示 60%。

我假设用户(正在填写表格(已登录。

views.py

def index(request):
user = request.user
if user.user_name is None:
per = 0
else:
b = [user.user_name.f1, user.user_name.f2, user.user_name.f3, user.user_name.f4, user.user_name.f5]
count = 0
for j in b:
if j:
count += 1
per = count * 20
if request.method == 'POST':
form = FormName(request.POST)
if form.is_valid():
form_save = form.save(commit=False)  # assuming you are using ModelForm.
form_save.user = user  # user is OneToOneField
form_save.save()
# if you don't redirect after save, django will show same page after saving.
else:
form = FormName()
context = {
'form': form,
'per': per
}
return render(request, 'templateName.html', context)

模板

<h1>{{ per }}% completed</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form  }}
<input type="submit" value="submit">
</form>

我用它来检查配置文件完成的百分比。如果您有不同的条件,请发表评论。

相关内容

  • 没有找到相关文章

最新更新