®
HTMLエンティティを含むDjangoフォームにドロップダウンボックスがあります。Djangoに安全とマークさせる簡単な方法はありますか?
これは機能しません:
{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
編集:
ForeignKey
ドロップダウン ボックスはフィールドから生成されることに注意してください。
®
HTMLエンティティを含むDjangoフォームにドロップダウンボックスがあります。Djangoに安全とマークさせる簡単な方法はありますか?
これは機能しません:
{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
編集:
ForeignKey
ドロップダウン ボックスはフィールドから生成されることに注意してください。
その通りです - 動作しません...最も簡単な方法は、Python から安全であるとマークすることだと思います。
from django.utils.safestring import mark_safe
MY_CHOICES = [
('foo', mark_safe('& foo')),
('bar', 'bar'),
]
ソースによると、ModelChoiceField.choices
手動で定義するか、新しいフィールドを記述してオーバーライドできるようですlabel_from_instance
。
class MyModelForm(forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['foo'].choices = ((foo.id, mark_safe(foo.bar)) for foo in Foo.objects.all())
class SafeModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return mark_safe(obj)
ModelForm
field -> form field
他の魔法の変換が上書きされないように、自分で選択肢を作成することを好むと思います。