Python 如何在django模板中输出表单字典
我正在将表单列表保存为发送到模板的视图中的变量 当我在模板中迭代表单列表时,它会给出错误信息 AttributeError:“long”对象没有属性“get” 我最初尝试将表单保存在字典中,但出现了相同的错误。我可以通过传递给模板的查询集进行迭代,但表单列表或字典似乎无法进行迭代 有什么解决办法吗 这是我的相关代码: forms.pyPython 如何在django模板中输出表单字典,python,django,forms,list,dictionary,Python,Django,Forms,List,Dictionary,我正在将表单列表保存为发送到模板的视图中的变量 当我在模板中迭代表单列表时,它会给出错误信息 AttributeError:“long”对象没有属性“get” 我最初尝试将表单保存在字典中,但出现了相同的错误。我可以通过传递给模板的查询集进行迭代,但表单列表或字典似乎无法进行迭代 有什么解决办法吗 这是我的相关代码: forms.py from django.contrib.auth.models import User from django import forms from apps.ac
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)
account/models.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 member in staff %}
{{member.user.first_name}}
{% endfor %}
更新
这个特别的错误是因为我没有在表单的initial
中指定用户类型
应该是:
form = StaffUserTypeForm(initial={'user_type':member.user.userprofile.user_type})
但是,我仍然有为每个staffmember吐出表单的问题,因为我不能在模板中引用变量作为字典键:
如果:
我无法获取特定员工的表单:
{% for member in staff %}
{{roles.member}}
{% endfor %}
不工作,也不会抛出错误。我认为,它只是寻找不存在的角色['member'.既然
角色
字典既包含成员(作为键)又包含表单(作为值),为什么您需要遍历员工
?只需遍历角色
{% for member, form in roles.items %}
{{ member }} : {{ form }}
{% endfor %}
你应该使用一个。此外,当出现异常时,您应该发布完整的stacktraces。您确定这与角色中的角色生成错误有关吗?错误是我没有在表单中发送字典作为初始值。但是,仍然无法引用for循环中的表单。我相信这是一个模板的问题,就像一个符咒。我在想我必须做一个模板过滤器来将变量作为键传递:。你为我节省了一些时间!谢谢
{% for member in staff %}
{{roles.member}}
{% endfor %}
{% for member, form in roles.items %}
{{ member }} : {{ form }}
{% endfor %}