Django中SelectField中的缩进文本

时间:2011-05-23 15:43:41

标签: django select space indentation

我正在尝试在多选字段中缩进文本。

def __init__(self):
    super(RegisterFull,self).__init__()
    sectorList = Sector.objects.all()    

sArray = []    
for s in sectorList:    
    sArray.append((s.id,"    "+s.__unicode__()))
self.fields["subsector"].choices = sArray

我试过这个和

sArray.append((s.id,"  "+s.__unicode__()))

但是,我无法实现我想要的,因为“&”字符被&取代(当然)和空的空间被修剪。为何,何时创建html页面?

你能提出一个方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我建议使用级联样式表(CSS)来根据需要格式化字段。 HTML应该主要关注文档的布局,而CSS可以对格式进行微调。因此,在表单的窗口小部件中添加一个类;

例如,

class UserForm(forms.Form):
    name = forms.CharField(widget = forms.TextInput(attrs={'class':'indented'}))

然后在CSS的顶部放置模板(或移动到单独的样式表)

<style type="text/css">
.indented {
    text-indent: 20px;
}
</style>

如果你真的想要,你可以做一些更简单的事情:

class UserForm(forms.Form):
    name = forms.CharField(widget = forms.TextInput(attrs={'style':'text-indent: 20px;'})).

编辑:让您的解决方案工作(使用&nbsp;

from django.utils.safestring import mark_safe

def __init__(self):
    super(RegisterFull,self).__init__()
    sectorList = Sector.objects.all()    

    sArray = []    
    for s in sectorList:    
        sArray.append((s.id,mark_safe("&nbsp; &nbsp; "+s.__unicode__())))
        self.fields["subsector"].choices = sArray