Python Django类型错误';用户';对象是不可编辑的
是否无法使用User.objects.all()在用户对象上迭代?? 我也试着这么做,但没有用 我有一张表格Python Django类型错误';用户';对象是不可编辑的,python,django,Python,Django,是否无法使用User.objects.all()在用户对象上迭代?? 我也试着这么做,但没有用 我有一张表格 class AddMemberForm(Form): user = forms.ChoiceField(choices=User.objects.all(), initial='Choose a User', ) 我试图通过一个模板来呈现它。下面views.py的相应部分 class StationHome(V
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>
{%csrf_令牌%}
{{form1}}
但由于此表单,我无法访问URL。我在对应的URL上得到了一个类型错误“User”对象不可编辑
错误
请有人帮忙。使用而不是简单的选项字段
:
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)
我有Django的View
类的一个子类的post
方法,该类从表单中获取用户。我希望所选用户添加到名为Station的模型的多个关系中station=station.objects.get(pk=pk)
station.members.add(form.cleaned_data['user'])
但这不起作用。你能告诉我怎么了吗?我在/station/2/addmember'user'上得到keyrerror
error!我写了form=form(request.post)
而不是AddMemberForm(request.post)
:/Catavaran你能告诉我这个吗;如果我想在创建表单实例时更改查询集,该怎么办?form1=AddMemberForm()form1.user.queryset=station.members.all()
这似乎不起作用使用表单的字段
属性:form1.fields['user'].queryset=…
。另一个例子请参见我答案中的更新。