如何在Django-temp中输出表单字典

2024-10-08 21:14:18 发布

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

我将表单列表作为变量保存在发送到模板的视图中。在

当我迭代模板中的表单列表时,它会给出错误信息

AttributeError: 'long' object has no attribute 'get'

我本来想把表格保存在字典里,但也有同样的错误。我可以遍历传递给模板的查询集,但表单的列表或字典似乎无法迭代。在

有什么解决办法吗?在

以下是我的相关代码:

在表单.py在

from django.contrib.auth.models import User
from django import forms
from apps.account.models import UserProfile

class StaffUserTypeForm(forms.Form):
    user_type = forms.ChoiceField(choices=UserProfile.STAFF_CHOICES)

帐户/模型.py在

^{pr2}$

在视图.py在

from forms import *
    ...
    staff = Staff.objects.all()
    roles = []
    for member in staff:
        form = StaffUserTypeForm(initial=member.user.userprofile.user_type)
        roles.append(form)
    context.update({'staff':staff,'roles':roles})
    ...

模板(这是它中断的地方)

{% for role in roles %}
{{role}}
{% endfor %}

但这很好:

{% for member in staff %}
{{member.user.first_name}}
{% endfor %}

更新

这个错误是因为我没有在initial中为表单指定user_type。在

应该是:

form = StaffUserTypeForm(initial={'user_type':member.user.userprofile.user_type})

但是,我仍然存在为每个staffmember输出表单的问题,因为我不能在模板中引用变量作为字典键:

如果:

roles = {}
for member in staff:
  roles[member] = StaffUserTypeForm(initial={'user_type':member.user.userprofile.user_type})

我找不到具体员工的表格:

{% for member in staff %}
{{roles.member}}
{% endfor %}

不工作,也不抛出错误。我认为,它只是寻找不存在的角色['member']。在


Tags: infromimport模板表单列表fortype
1条回答
网友
1楼 · 发布于 2024-10-08 21:14:18

既然roles字典既包含成员(作为键)也包含形式(作为值),那么为什么需要遍历staff?只需迭代roles。在

{% for member, form in roles.items %}
    {{ member }} : {{ form }}
{% endfor %}

相关问题 更多 >

    热门问题