我将表单列表作为变量保存在发送到模板的视图中。在
当我迭代模板中的表单列表时,它会给出错误信息
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']。在
既然
roles
字典既包含成员(作为键)也包含形式(作为值),那么为什么需要遍历staff
?只需迭代roles
。在相关问题 更多 >
编程相关推荐