范围酒吧树

Range bar otree

我在 Otree 中放置双范围滑块时遇到问题。 ¿有人可以向我解释,最简单的方法是什么?。我想知道也许我必须导入一些新的小部件,但我不知道如何开始,对吗?

以下代码将在 Player 模型的 left 字段中存储范围的 'left' 值,并在 right 中存储 'right'一:

型号:

class Player(BasePlayer):
   left = models.IntegerField()
   right = models.IntegerField()

观看次数:

class MyPage(Page):
   form_model = 'player'
   form_fields = ['left', 'right']

模板:

{% block content %}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
    $(function () {
        $("#slider-range").slider({
            range: true,
            min: 0,
            max: 500,
            values: [75, 300],
            slide: function (event, ui) {
                $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
                $("#id_left").val(ui.values[0]);
                $("#id_right").val(ui.values[1]);
            }
        });
        $("#amount").val("$" + $("#slider-range").slider("values", 0) +
            " - $" + $("#slider-range").slider("values", 1));
    });
</script>


<p>
    <label for="amount">Slider range:</label>
    <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>

<div id="slider-range"></div>
{{ form.left.as_hidden }}
{{ form.right.as_hidden }}
{% next_button %}

{% endblock %}

所以 'trick' 是将输入字段呈现为隐藏: {{ form.left.as_hidden }} 然后使用这样一个事实,即您可以根据模型字段名称使用它们的 id 从滑块传递值。所以 left 字段在 html 中有 id_left id,依此类推。