1
我在包含®
HTML實體的Django表單上有一個下拉框。有沒有簡單的方法讓Django將其標記爲安全?我可以標記一個Django輸出選擇框內的HTML實體爲安全嗎?
這不起作用:
{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
編輯:
我應該提到的是,下拉框,從ForeignKey
場產生的。
我在包含®
HTML實體的Django表單上有一個下拉框。有沒有簡單的方法讓Django將其標記爲安全?我可以標記一個Django輸出選擇框內的HTML實體爲安全嗎?
這不起作用:
{{ 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
轉換不會被覆蓋。
有沒有辦法做到這一點從一個ForeignKey字段生成的下拉框? – davidscolgan
我想你可以在你的表單__init__中做到這一點.. –
哦,等等,'ModelChoiceField'使用查詢集,而不是選擇。讓我們深入瞭解它如何將QS轉換爲選擇。 –