0

所以我有一个ManageUserFormforms.py——它可以正确呈现,但它没有从我试图编辑的用户那里提取正确的数据。

在模板中,我有一个正常工作的 for 循环

{% for tenants in tenants %}
{{ tenants.user }} {{ tenants.type }}
{% endfor %}

此模板呈现 UserProfile 中的对象列表。它正确地做到了。我面临的挑战是更新“tenants.type”属性。同样,该类型显示正确,但我不知道如何从此模板页面更新它。

#views.py

def manage_users(request):
tenants = UserProfile.objects.all()

form = ManageUserForm(request.POST or None)

if form.is_valid():
    update = form.save(commit=False)
    update.save()

return render_to_response('manage_users.html', locals(), context_instance=RequestContext(request))

#forms.py

class ManageUserForm(forms.ModelForm):
     class Meta:
         model = UserProfile
         exclude = ('full_name', 'user',)

`我想我需要调用一个实例,但我不知道如何为非请求用户这样做,并且仍然遵循模板的模式。模板基本上是一个用户列表,请求用户(员工用户)将能够更改列表中的数据。

感谢您的帮助!

4

1 回答 1

1

您有一个用户的一个表单。如果您想使用该表单来编辑多个租户,您需要一个 FormSet。编辑对象和显示它们是完全不同的野兽;不要混淆他们。

formset = modelformset_factory(form=ManageUserForm, queryset=tenants) 

更新:
您应该拥有一个{{ form.management_form }}和其余的{% for form in formset %}{{ form }}{% endfor %}合一<form>标签。您的所有表单都是表单集中的第一个表单。

您应该重写模板循环以遍历表单集表单而不是租户对象。租户对象可以通过{{ form.instance }}


更新 2:
您有一个额外的表单,因为您可能没有将extra=0参数传递给modelformset_factory函数。这些表格通常用于添加/编辑数据;因此它支持添加N个空白表格进行创建。

于 2012-09-16T21:24:41.423 回答