[英]Django TypeError 'User' object is not iterable
是否無法使用User.objects.all()迭代User對象? 我試圖做同樣但無濟於事
我有一張表格;
class AddMemberForm(Form):
user = forms.ChoiceField(choices=User.objects.all(),
initial='Choose a User',
)
我試圖通過模板渲染它。 views.py的相應部分如下;
class StationHome(View):
def get(self, request, pk):
station = Station.objects.get(pk=pk)
channels = Channel.objects.filter(station=station)
members = station.members.all()
form1 = AddMemberForm()
return render(request,
"home_station.html",
{"form1":form1,
"station":station,
"channels":channels,
"members":members,
},
)
最后相應模板的相應部分,
<form method="post" action="{% url 'add_member' station.pk %}">
{% csrf_token %}
{{ form1 }}
</form>
但由於此表單,我無法訪問該URL。 我TypeError at
相應的URL上得到一個TypeError at
'User' object is not iterable
錯誤。
有人請幫忙。
使用ModelChoiceField
而不是簡單的ChoiceField
:
user = forms.ModelChoiceField(queryset=User.objects.all(),
empty_label="(Choose a User)")
更新 :您可以在窗體的構造函數中更改查詢集。 例如,如果要從表單中排除已添加的成員:
class AddMemberForm(Form):
...
def __init__(self, *args, **kwargs):
station = kwargs.pop('station')
super(AddMemberForm, self).__init__(*args, **kwargs)
if station:
self.fields['user'].queryset = User.objects.exclude(
id__in=station.members.all())
然后使用station
參數創建表單:
form1 = AddMemberForm(station=station)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.