如何使用Django 2创建一个适应用户数量的表单?

2024-09-28 20:58:57 发布

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

我是biginner wiht django,我想创建一个表单,使他能够适应用户的数量。 目标是宣布员工是否在场以及他们在一天中工作的小时数,知道员工的数量可以从一天变到另一天。 所以我想到了创建两个变量:一个整数计算一天中的小时数,另一个布尔值对应于是否有员工,并且被复制的次数与有员工的次数相同

所以,我测试了一下:

表单.py:

class HoursDeclarationForm(forms.Form):
    number_of_hours = forms.FloatField(required=True)
    for user in User.objects.all():
        presence = forms.BooleanField(label="{0} {1}".format(
            User.first_name,
            User.last_name
            )
        )

视图.py:

def hours_declaration (request):
    form = HoursDeclarationForm(request.POST or None)

    return render (
        request,
        'HoursDeclaration/hours_declaration.html'
        , locals()
        )

小时声明.html:

<h1>Ceci est la page ou tu peux attribuer à chaque salarié le nombre 
d'heure qu'il a effectué.<h1>
<form action="{% url "hours_declaration" %}" method = "post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="submit">
</form>

但是我得到一个前面有“django.db.models.query\u utils.DeferredAttribute object at 0x0000025505def98 django.db.models.query\u utils.DeferredAttribute object at 0x0000025505defd0”的复选框,不管用户数量如何。
如果我的句子措辞不正确,请原谅,我的英语不是很好, 谢谢你的回答


Tags: djangonamepyform表单数量request员工
1条回答
网友
1楼 · 发布于 2024-09-28 20:58:57

您似乎通过表单字段实现了某种小部件。我不确定那是个好主意。字段可能应该是^{} [Django-doc],也许可以使用^{} widget [Django-doc]。因此,我们可以通过以下方式实现这一点:

class HoursDeclarationForm(forms.Form):
    number_of_hours = forms.FloatField(required=True)
    presense = forms.ModelMultipleChoiceField(
        queryset=User.objects.all(),
        widget=forms.CheckboxSelectMultiple
    )

相关问题 更多 >