Python 如何在django模板中输出表单字典

Python 如何在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

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

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

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)
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 %}