0

テンプレートに送信するビューで、フォームのリストを変数として保存しています。

テンプレート内のフォームのリストを繰り返すと、エラーが発生します

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 role in roles %}
{{role}}
{% endfor %}

しかし、これは正常に機能します。

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

アップデート

その特定のエラーは、フォームにuser_typeを指定しなかったためinitialです。

する必要があります:

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

ただし、テンプレート内で変数を辞書キーとして参照できないため、各スタッフのフォームを吐き出すという問題がまだあります。

もしも:

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

特定のスタッフのフォームを取得できません。

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

動作せず、エラーをスローしません。存在しないロール['メンバー']を探しているだけだと思います。

4

1 に答える 1

1

辞書には(キーとしての)メンバーと(値としての)フォームの両方がroles含まれているのに、なぜstaffまったく繰り返す必要があるのでしょうか。を繰り返すだけrolesです。

{% for member, form in roles.items %}
    {{ member }} : {{ form }}
{% endfor %}
于 2013-02-14T21:02:16.867 に答える