2016-12-29 5 views
0

私は自分のテンプレート上のオブジェクトのリストの中でただ一つのランダムなオブジェクトを取得しようとしています。ここでカスタムフィルタを使用してオブジェクトリストのランダムな値を取得するにはどうすればよいですか?

は私がしようとしているものの例である:

views.pyはこのように書きます:Font.objects.all()

テンプレートファイル:

{% for f in Fo.checkbox.all %}  #f|random_choice doesn't work here. 
    <p>{{ f.font_name|random_choice }}</p>  #gives me a single random character of each object. 
{% endfor %} 

の例では、上記示します私はリスト内の各オブジェクトの単一のランダムな文字ですが、私はオブジェクトのリストにランダムなオブジェクトを取得しようとしています。

@register.filter(name='random_choice') 
def random_choice(l): 
    return random.choice(list(l)) 

私はそれをどのように操作を行うことができます。ここ

templatetagファイルのですか?

+0

もう少し詳しく見ることができます。あなたは文脈のためにテンプレートに何を渡していますか? Fo.checkboxはどこから来たのですか?あなたのビューにfonts = Font.objects.all()のようなものがあって、それを{'fonts':fonts、}として渡すなら、あなたのテンプレート{{fonts | random}}はうまくいくはずです。あなたはすでに何かを繰り返しているようです。 {{Fo.checkbox.all | random}} – AMG

答えて

2

そのは既にこのインタビューのためだったと、あなたはこの1つ以外の答えを与えた場合...私はyaを言うことを憎むが、あなたはおそらく、彼らが探していた答えを与えていないhttps://docs.djangoproject.com/en/1.10/ref/templates/builtins/#random

{{ my_list | random }} 

に建てられましたfor ...

{{ Fo.checkbox.all | random }} {# print one random value from Fo.checkbox.all #} 
+0

私はそれが既に存在していることを知っていますが、あなたの 'my_template.html'ファイルに' Fo.checkbox.all'のランダムな結果を表示する場所はどこですか? –

+0

.... –

+0

今、私はこのエラーが発生しています: ''Font'オブジェクトはiterableではありません'なぜですか? –

関連する問題