如何使用自定义过滤器获取对象列表的随机值?

时间:2016-12-29 17:09:13

标签: python django django-templates django-template-filters

我正在尝试直接在我的模板上的对象列表中获取单个随机对象。

这是我想要做的一个例子:

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 %}

上面的示例为我提供了列表中每个对象的单个随机字符,但我正在尝试在对象列表中获取一个随机对象。

这是 templatetag 文件:

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

我该怎么做?

1 个答案:

答案 0 :(得分:2)

已经内置https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#random

{{ my_list | random }}

如果这是面试,你给出的任何其他答案都不是这个......我讨厌告诉你,但你可能没有给出他们想要的答案......

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