jquery - 获取 Django 中 HTML 表单中多个按钮之一的 ID

标签 jquery python html django forms

我使用 Django 作为为跟踪网站提供支持的底层 FSM。我现在想允许用户更改机器的状态。状态表示为 django-fsm 字段,本质上是一个 CharField,上面有一些逻辑。

为了允许用户选择下一个状态,我最初的方法是显示一个多项选择字段(下拉菜单),该字段将使当前状态无法访问的状态变灰。我找不到一个好的方法来做到这一点,而且它对用户不太友好(尽管我仍然对问题的解决方案感兴趣)。出于所有这些原因,我选择了 B 计划:

有一个包含多个按钮的表单,每个按钮对应我们可以转到的每个状态。像这样的事情:

<form action="{% url 'tracking:order_detail' order.id %}" method="POST">
        <div id="buttons">
            <input id="3.4" type="submit" class="f" name="action" value="Some State">
            <input id="3.5" type="submit" class="f" name="action" value="Another State">
            <div style="clear:both"></div><!-- Need this to have the buttons actually inside div#buttons -->
        </div>
</form>

现在我的问题是:作为值,我想要人类可读的东西,但是从 Django 我想检索一个实际的状态值,我将其放置在 ID 字段中,例如“3.4”。查看 Django 中的表单数据,我所能做的就是:

if request.method == "POST":
     action = request.POST.get('action')

但这会给我“另一种状态”。无法访问 id 字段。看着form specification我找不到其他合适的领域。关于如何解决这个问题的任何想法。

最佳答案

使用输入名称作为值

<form action="{% url 'tracking:order_detail' order.id %}" method="POST">
        <div id="buttons">
            <input type="submit" class="f" name="action:3.4" value="Some State">
            <input type="submit" class="f" name="action:3.5" value="Another State">
            <div style="clear:both"></div><!-- Need this to have the buttons actually inside div#buttons -->
        </div>
</form>

在Python中

if 'action:3.4' in request.POST:
    action = '3.4'
...    

如果您获得大量操作,您可以在 POST 键中搜索操作。

action = None
for key in request.POST.keys():
    if key.startswith('action:'):
        action = key[7:]
        break

关于jquery - 获取 Django 中 HTML 表单中多个按钮之一的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448911/

相关文章:

javascript - Jquery Prop 功能未按预期工作

python - 将特定的 pydantic 对象字段设置为 null 时不序列化

python - 数组 - float64 到数组 - ndarray

html - 具有不同大小元素的网格布局

javascript - 如何在javascript事件中通过参数调用页面方法?

jquery - 我无法自动播放 vimeo 视频(手机)

javascript - 单击子范围中的 X 标记时如何隐藏元素

python - 运行测试时如何让 tox 尊重系统版本?

javascript - 我可以使用 div 为它所在的容器设置动画吗?

Jquery:不同的点击和输入处理程序