【发布时间】:2014-11-18 21:11:17
【问题描述】:
我有以下情况:
forms.py
REASONS = [
{'code': 1, 'reason': 'I want to unsubscribe'},
{'code': 2, 'reason': 'I hate this site'}]
Myform(forms.Form):
magic_field = forms.CharField(required=True)
def __init__(self):
# Depending on the REASONS list add the fields to the form
for key in REASONS:
self.fields['reason_{}'.format(key['code'])] = forms.BooleanField(
label=_(key['reason']),
widget=widgets.CheckboxInput())
我想要的是以随机顺序呈现原因的顺序。
template.html
<form method="POST" action="{% url unsubscribe %}">
{% if some_event %}
{{ form.magic_field }}
{% endif %}
{{ form.reason_1 }} # <-- randomize this order
{{ form.reason_2 }} # <-- randomize this order
</form>
【问题讨论】:
-
您是否尝试过在您的 forms.py 中导入
random然后改组REASONS?我不确定这是否会洗牌一次并称之为一个晚上,或者每次出现时都洗牌。 -
@TehTris 是的,问题正如我在下面的高兴回答中所解释的那样
-
好吧,我明白了。使用 django 本身,您可以创建一个可以应用于它的自定义过滤器(在模板中它最终看起来像
{{ form | filter_name }})除此之外,我能想到的唯一其他方法是如果您使用PHP或Javascript直接将模板中的{{form.reason_1}}和{{form.reason_2}}打乱
标签: python django forms jinja2