python - 如何像在管理面板操作中一样仅更新 Django 查询集中的选定记录?
问题描述
我立即为错误道歉,英语不是我的母语(本文是谷歌翻译)
您好,我是 django 新手,我有一个问题。我在数据库中有一个表,其中包含字段和布尔值“已检查”。您需要向其他用户授予检查记录的权限,而我不想授予对管理面板的访问权限。如何在视图中显示一个复选框以及表中的查询集以在表中将值设置为 true 并仅更新此复选框选择的行?它需要在 django 管理面板中作为“操作”工作
PS我尝试通过表格,但它只会创建一个新记录
pps 现在结果只是更新表的所有记录
这是我的model.py
class moIn(models.Model):
date = models.DateTimeField(auto_now_add=True, verbose_name='')
dateUpdate = models.DateTimeField(auto_now=True)
ts = models.IntegerField(verbose_name='')
pl = models.IntegerField(verbose_name='')
rem = models.IntegerField(verbose_name='')
comment = models.TextField(max_length=200, verbose_name='', blank=True)
staffer = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='')
checked = models.BooleanField(verbose_name='', default=False)
checkedUser = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='', blank=True, null=True, related_name='checkedUser')
def __str__(self):
return '{0}'.format(self.date)
# return self.user
class Meta:
ordering = ['-date']
verbose_name = ''
verbose_name_plural = ''
您需要通过模板更改“checked”参数,并自动将发送请求的用户插入“checkedUser”
Ppps 另外,我使用 Django 过滤器应用程序进行过滤
视图.py
@login_required
# @user_passes_test(is_member_group)
def dashboard(request):
if request.user.groups.filter(name='DashBoardAccess').exists():
form = checkForm
f = tableDashFilter(request.GET, queryset=moIn.objects.all())
if request.method == 'POST':
form = checkForm(request.POST)
if form.is_valid():
data = form.cleaned_data
f.queryset.checked = data['checked']
f.queryset.update(**data)
return HttpResponse('ok')
else:
context = {
'filter': f,
'form': form
}
return render(request, 'dashboard/index.html', context)
else:
raise Http404()
HTML
<form action="" method="post">
{%csrf_token%}
<tbody class="table-view__body">
{% for out in filter.qs %}
<tr>
<td>{{form.checked}}</td>
<td>{{out.date|date:"d.m.Y"}}</td>
<td>{{out.ts}}</td>
<td>{{out.pl}}</td>
<td>{{out.rem}}</td>
<td>{{out.comment}}</td>
<td>{{out.checked}}</td>
<td>{{out.staffer}}</td>
<td>{{out.checkedUser}}</td>
{% endfor %}
</tbody>
</table>
<button type="submit">test</button>
</form>
解决方案
推荐阅读
- ms-access - MS Access 365 错误 - 压缩和修复错误
- email - 如何使用 office 365 smtp 服务器在 AWS EC2 上发送电子邮件
- python-3.x - 创建变量和创建循环之间有区别吗?
- javascript - 如何添加过渡到徽标缩小
- php - M1芯片节点Sass冲突
- javascript - 如果推送事件不存在,何时决定从 API 获取数据还是使用客户端缓存?
- r - 使用 tm1r 发送数据集时出错。如何调试这个问题?
- google-apps-script - 是否可以将 Google 表格中的多张表格作为电子邮件附件发送?
- java - 如何在jar文件中获取资源文件夹的路径
- python - 如何通过单击 PySimpleGUI 中的行来触发事件