1

私は次のシナリオを持っています:

  • ユーザーは をロードhome.htmlし、5 つのチェックボックスのサブセットを選択して、送信をクリックします。
  • ユーザーが にstats.html到達すると、選択したチェックボックスに関連する値が表示され、特定のチェックボックスが CHECKED としてマークされます。

次の内容の「itemsToCheck」という変数をstats.htmlテンプレートに渡しています。

[(u'8', u'on'), (u'7', u'on')]

これらの値は、次のような特定のチェックボックスを選択するのに役立ちます。

<input type="checkbox" checked="yes" name="{{ MyModel.id }}"/>

どのようにそれを達成しますか (checked={% something %}またはおそらく jQuery のようなテンプレート構文を使用して)?

私は Django/Web 開発の初心者なので、私のアプローチが完全に間違っているか、よりクリーンでエレガントなソリューションがあるかをお知らせください。

4

1 に答える 1

1

これは、リストの代わりに辞書を渡すと機能します。

itemsToCheck = {7: 'on', 8: 'on'}

<input type="checkbox" {% if MyModel.id in itemsToCheck.keys %}checked="checked"{% endif %} name="{{ MyModel.id }}"/>

説明されているリストの場合:

[(8, 'on'), (9, 'on')]

さらに処理を行う必要があります。

編集:または、辞書キーが文字列の場合:

{% if MyModel.id|stringformat:"s" in itemsToCheck.keys %}

または、変換をスキップする形式で itemsToCheck を準備するだけです...

EDIT 2: 実際には、ここでタグを使用します:

@register.inclusion_tag('checkbox.html')
def my_checkboxes(request, items):
    return {"items": [{'id': i.id, 'checked': request.POST[str(i.id)] == 'on'} for i in items]}

そして、checkbox.html で:

{% for i in items %}
<input type="checkbox" {% if i.checked %}checked="checked"{% endif %} name="{{ i.id }}"/>
{% endfor %}
于 2012-06-13T12:28:29.677 に答える