我将表单列表保存为视图中的变量,并将其发送到模板。
当我迭代模板中的表单列表时,它会给我错误
AttributeError:"long"对象没有属性"get"
我本来想把表格保存在字典里,但也出了同样的错误。我可以迭代传递给模板的查询集,但表单的列表或字典似乎无法迭代。
有什么解决办法吗?
这是我的相关代码:
forms.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
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
DEFAULT = 0
ADMIN = 1
MANAGER = 2
COORDINATOR = 3
REALTOR = 4
TEAM_CAPTAIN = 5
PROPERTY_OWNER = 6
PRELOAD = 7
BILLING = 8
COORDINATOR_PRELOAD = 9
STAFF_CHOICES = (
(ADMIN, 'Admin'),
(MANAGER, 'Manager'),
(COORDINATOR, 'Coordinator'),
(COORDINATOR_PRELOAD, 'Coordinator +Preload'),
(PRELOAD, 'Preloader'),
(BILLING, 'Billing'),
)
...
views.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})
然而,我仍然有为每个工作人员吐出表单的问题,因为我不能在模板中引用变量作为字典键:
if:
roles = {}
for member in staff:
roles[member] = StaffUserTypeForm(initial={'user_type':member.user.userprofile.user_type})
我找不到具体工作人员的表格:
{% for member in staff %}
{{roles.member}}
{% endfor %}
不起作用,也不会引发错误。我认为,它只是看起来像是不存在的角色。
既然roles
字典包含成员(作为键)和形式(作为值),为什么需要遍历staff
?只需迭代roles
。
{% for member, form in roles.items %}
{{ member }} : {{ form }}
{% endfor %}