Django: Почему мой CharField не получает класс vTextField? - PullRequest
3 голосов
/ 10 января 2010

У меня есть такая форма:

class DiaryEventForm(forms.Form):
  title = forms.CharField(max_length = 200)

, который генерирует этот HTML:

<input id="id_title" type="text" name="title" maxlength="200" /> 

Это выглядит как очень узкое в админке (где у меня есть пользовательское представление, использующее эту форму).

Если у меня есть модель, определенная так:

class DiaryEvent(BaseModel):
  title = models.CharField(max_length = 200)

Я получил этот HTML:

<input id="id_title" type="text" class="vTextField" name="title" maxlength="200" />

Какой самый элегантный способ добавить класс vTextField в мою форму? Этот класс, кажется, является способом, которым стилизуются обычные вводы текста, поэтому я хотел бы использовать его, а не стилизовать его сам.

Ответы [ 3 ]

6 голосов
/ 11 января 2010

Хотя ответ @ czarchaic сработал (так что +1), просмотр источника дал решение, которое я предпочитаю:

from django.contrib.admin.widgets import AdminTextInputWidget

class DiaryEventForm(forms.Form):
    title = forms.CharField(max_length = 200, widget = AdminTextInputWidget())
3 голосов
/ 11 января 2010

Вы можете добавить атрибуты через виджет

 class DiaryEventForm(forms.Form):
  title = forms.CharField(max_length = 200, widget=forms.TextInput(attrs={'class': 'vTextField'}))
0 голосов
/ 11 января 2010

Вы можете использовать этот трюк.

Поместите свои поля в div с классом:

<div class="vTextField">
<label>
    {{ form.title }}
</label>
</div>

А вот соответствующий блок CSS:

.vTextField label{
 your style here
}

В этом случае вам не нужно указывать класс стиля в python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...