更新多条记录的Django表单
Django form that updates multiple records
我有 2 类 位用户可以查看列出我应用中所有用户的屏幕。用户类型由用户模型上的布尔字段控制。该屏幕当前列出了用户和有关他们的各种详细信息(见下文)。项目经理应该看到页面的只读视图,管理员也应该能够编辑用户。
HTML为屏幕。
<div class="card-body">
<div class="table-responsive">
<table class="table text-sm mb-0">
<thead>
<tr>
<th>#</th>
<th>Username</th>
<th>First Name</th>
<th>Last Name</th>
<th>Is Contributor?</th>
<th>Is Project Manager?</th>
<th>Is is_administrator?</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<th scope="row">{{ user.id }}</th>
<td>{{ user.username }}</td>
<td><a class="btn btn-primary" href=" " role="button">{{ user.first_name }}</a></td>
<td>{{ user.last_name }}</td>
<td>{{ user.is_contributor }}</td>
<td>{{ user.is_projectmanager }}</td>
<td>{{ user.is_administrator }}</td>
<td><a class="btn btn-info" href="" role="button">Edit</a></td>
<td><a class="btn btn-danger" href="" role="button">Delete</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
我想创建一个可供管理员用户使用的屏幕版本,允许他们同时查看和更新所有用户。
如何创建一次更新所有用户的表单?我正在寻找构建一些东西,用与模型关联的字段列表列出用户,然后让管理员能够同时为多个用户更改这些字段,然后点击保存按钮提交表格?
我能够使用模型表单集来解决这个问题。
https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/#model-formsets
我刚刚创建了如下所示的表单集。
UserFormSet = modelformset_factory(User,fields=('username','first_name','last_name','email','is_contributor','is_projectmanager','is_administrator'))
formset = UserFormSet()
context = {
# 'users':users,
'formset':formset,
}
return render(request, 'bugtracker_app/users.html', context)
然后我在模板中遍历了它:
</div>
{% for form in formset %}
{{form}}
{% endfor %}
</div>
它还没有像我想象的那样安静地格式化(它垂直呈现字段而不是水平呈现,如下所示,但我相信我可以找到解决这个问题的方法。
我有 2 类 位用户可以查看列出我应用中所有用户的屏幕。用户类型由用户模型上的布尔字段控制。该屏幕当前列出了用户和有关他们的各种详细信息(见下文)。项目经理应该看到页面的只读视图,管理员也应该能够编辑用户。
HTML为屏幕。
<div class="card-body">
<div class="table-responsive">
<table class="table text-sm mb-0">
<thead>
<tr>
<th>#</th>
<th>Username</th>
<th>First Name</th>
<th>Last Name</th>
<th>Is Contributor?</th>
<th>Is Project Manager?</th>
<th>Is is_administrator?</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<th scope="row">{{ user.id }}</th>
<td>{{ user.username }}</td>
<td><a class="btn btn-primary" href=" " role="button">{{ user.first_name }}</a></td>
<td>{{ user.last_name }}</td>
<td>{{ user.is_contributor }}</td>
<td>{{ user.is_projectmanager }}</td>
<td>{{ user.is_administrator }}</td>
<td><a class="btn btn-info" href="" role="button">Edit</a></td>
<td><a class="btn btn-danger" href="" role="button">Delete</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
我想创建一个可供管理员用户使用的屏幕版本,允许他们同时查看和更新所有用户。
如何创建一次更新所有用户的表单?我正在寻找构建一些东西,用与模型关联的字段列表列出用户,然后让管理员能够同时为多个用户更改这些字段,然后点击保存按钮提交表格?
我能够使用模型表单集来解决这个问题。 https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/#model-formsets
我刚刚创建了如下所示的表单集。
UserFormSet = modelformset_factory(User,fields=('username','first_name','last_name','email','is_contributor','is_projectmanager','is_administrator'))
formset = UserFormSet()
context = {
# 'users':users,
'formset':formset,
}
return render(request, 'bugtracker_app/users.html', context)
然后我在模板中遍历了它:
</div>
{% for form in formset %}
{{form}}
{% endfor %}
</div>
它还没有像我想象的那样安静地格式化(它垂直呈现字段而不是水平呈现,如下所示,但我相信我可以找到解决这个问题的方法。