Indent-текст в SelectField в Джанго - PullRequest
1 голос
/ 23 мая 2011

Я пытаюсь сделать отступ для текста в поле с несколькими вариантами выбора.

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 Ответ

1 голос
/ 23 мая 2011

Я бы предложил использовать каскадные таблицы стилей (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
...