我的 Django 表单上有一个包含®
HTML 实体的下拉框。有没有一种简单的方法可以让 Django 将其标记为安全?
这不起作用:
{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
编辑:
我应该提到下拉框是从一个ForeignKey
字段生成的。
我的 Django 表单上有一个包含®
HTML 实体的下拉框。有没有一种简单的方法可以让 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
的转换都不会被覆盖。