python - Django:使用管理操作查询集扩展管理表单
问题描述
我有一个推送通知模型,用于将用户推送通知发送到他们的手机,但我现在要做的是一个管理操作,它将向多个用户发送推送通知。
所以这是我的管理员操作,它允许选择用户,然后是“发送推送通知”的操作:
到目前为止,我刚刚创建了一个动作和一个空的 HTML 模板,我认为我可以以某种方式扩展另一个应用程序,它是一个通知表单。
这是选择用户时我想打开的通知表单。
如您所见,这就是我们现在习惯发送通知的方式,一次只发送一个用户。所以基本上我想返回这个表单,但是使用之前从用户选项卡中选择的用户列表,我会简单地将其称为查询集,对吗?
{% extends "admin/....?html" %} {% block content %}
<form action="" method="post">
{% csrf_token %}
<p>Are you sure you want to execute this action on the selected items?</p>
{% for order in orders %}
<p>{{ order }}</p>
<input type="hidden" name="_selected_action" value="{{ order.pk }}" />
{% endfor %}
<input type="hidden" name="action" value="update_status" />
<input type="submit" name="apply" value="Update status" />
</form>
{% endblock %}
管理员.py
def send_push_notification(self, request, queryset):
# Create some kind of form and logic..??
if 'apply' in request.POST:
# The user clicked submit on the intermediate form.
# Perform our update action:
queryset.update(is_staff=False) # This is just to test
# Redirect to our admin view after our update has
# completed with a nice little info message saying
# our models have been updated:
self.message_user(request,
"Changed status on {} users".format(queryset.count()))
return HttpResponseRedirect(request.get_full_path())
return render(request,
'send_push_request.html',
context={'orders': queryset})
解决方案
推荐阅读
- python - 如何使用 pytest 模拟请求?
- javascript - 如何在javascript中修复“无法读取属性'first' of null”,不和谐机器人制作
- html - 如何改变照片的方向?
- python - 如何在 QGraphicsView 中点击鼠标?
- python-requests - 如何使用 python 请求登录:一个棘手的案例
- grafana - 如何在 Prometheus 中每小时正确抓取和查询指标
- python - 嵌套字典的每个产品/组合都保存到 DataFrame
- django - 在 django 中,用夹具加载的 slug 字段检索数据库记录是一种不好的做法吗?
- sql - SQL 未按时间正确排序
- java - 如何不断更新按钮颜色 [JAVA SWING]