我将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/

10-14 18:29
查看更多