Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django模板和视图中更新非请求用户信息_Django_Django Templates_Django Views - Fatal编程技术网

在Django模板和视图中更新非请求用户信息

在Django模板和视图中更新非请求用户信息,django,django-templates,django-views,Django,Django Templates,Django Views,因此,我在forms.py中有一个ManageUserForm——它可以正确地呈现,但它不能从我试图编辑的用户那里提取正确的数据 在模板中,我有一个正常工作的for循环 {% for tenants in tenants %} {{ tenants.user }} {{ tenants.type }} {% endfor %} 此模板呈现UserProfile中的对象列表。而且它做得很正确。我面临的挑战是更新“tenants.type”属性。同样,类型显示正确,但我不知道如何从这个模板页面更新

因此,我在forms.py中有一个
ManageUserForm
——它可以正确地呈现,但它不能从我试图编辑的用户那里提取正确的数据

在模板中,我有一个正常工作的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',)
`我想我需要调用一个实例,但我不知道如何为非请求用户调用,并且仍然遵循模板的模式。模板基本上是一个用户列表,请求用户(职员用户)可以在其中更改列表中的数据


谢谢你的帮助

一个用户有一个表单。如果要使用表单编辑多个租户,则需要一个表单集。编辑对象和显示对象是完全不同的;别把他们弄糊涂了

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

更新:
您应该在一个
标记中有一个
{{form.management{u form}}
{%for form in formset%}{{{form}}{%endfor%}
的其余部分。所有表单都是表单集中的第一个表单

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


更新2:

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

一个用户有一个表单。如果要使用该表单编辑多个租户,则需要一个
FormSet
。编辑对象和显示对象是完全不同的;别把他们弄糊涂了
formset=modelformset\u工厂(form=ManageUserForm,queryset=tenants)
愿谷歌的力量与你同在。太棒了。我试试看。谢谢你的帮助,我成功了。。看看它呈现了什么:。。。请注意,它不关联用户和表单模型。你知道怎么改变吗?确保单击用户名切换表单。您有多个表单;表单集应该同时处理单个表单和所有表单。您应该在一个标记中呈现一个{form.management_form}}和{%for form in formset%}{{form}{%endfor%}的其余部分。所有表单都是表单集中的第一个表单。您应该重写模板循环,以迭代formset表单,而不是租户对象。租户对象可以通过{{form.instance}}访问,这太棒了。我甚至不知道这是可能的。你知道我为什么要得到一个额外的领域吗?令人惊叹的。再次感谢你,玉姬。你帮了大忙。