1

®HTMLエンティティを含むDjangoフォームにドロップダウンボックスがあります。Djangoに安全とマークさせる簡単な方法はありますか?

これは機能しません:

{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}

編集:

ForeignKeyドロップダウン ボックスはフィールドから生成されることに注意してください。

4

1 に答える 1

3

その通りです - 動作しません...最も簡単な方法は、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他の魔法の変換が上書きされないように、自分で選択肢を作成することを好むと思います。

于 2012-06-09T00:21:31.553 に答える