我可以将Django输出的选择框中的HTML实体标记为安全的吗?
我的Django表单上有一个下拉框,其中包含我可以将Django输出的选择框中的HTML实体标记为安全的吗?,django,escaping,html-entities,Django,Escaping,Html Entities,我的Django表单上有一个下拉框,其中包含®HTML实体。有没有一种简单的方法让Django将其标记为安全的 这不起作用: {{ form.myoptions.label_tag }} {{ form.myoptions|safe }} 编辑: 我应该提到,下拉框是从一个外键字段生成的。你说得对-它不起作用。。。我认为最简单的方法是从python中将其标记为安全的 from django.utils.safestring import mark_safe MY_CHOICES = [
®代码>HTML实体。有没有一种简单的方法让Django将其标记为安全的
这不起作用:
{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
编辑:
我应该提到,下拉框是从一个外键
字段生成的。你说得对-它不起作用。。。我认为最简单的方法是从python中将其标记为安全的
from django.utils.safestring import mark_safe
MY_CHOICES = [
('foo', mark_safe('& foo')),
('bar', 'bar'),
]
根据源代码,您可以手动定义modelcooicefield.choices
,也可以编写一个新字段并覆盖label\u from\u 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->formfield
转换都不会被覆盖 对于从ForeignKey字段生成的下拉框,有没有办法做到这一点?哦,等等,modelcooicefield
使用queryset,而不是选项。让我深入研究它是如何将QS转换为选项的。是的,看起来您可以1:手动为字段构造选项,或者2:子类modelcoocefield
并将label\u从\u实例
覆盖到标记安全
。