Я использую django-crispy-forms для отображения формы модели в django. django-crispy-forms уже очень хорошо интегрируется с Twitter Bootstrap и определил объект макета для AppendedText
виджет:
У меня есть следующая модель в моем django models.py
class Historia(models.Model):
persona = models.ForeignKey('Persona',
blank=False,
null=True,
related_name='historias')
fecha = models.DateTimeField(unique=True,
auto_now_add=True)
motivo = models.TextField()
peso = models.DecimalField(blank=True,
max_digits=5, decimal_places=2)
talla = models.IntegerField(blank=True)
tension = models.CharField(max_length=15)
pulso = models.IntegerField()
diagnostico = models.TextField()
tratamiento = models.TextField()
pendiente = models.TextField(blank=True)
и я определяю следующие modelform
в forms.py
:
class HistoriaForm(django.forms.ModelForm):
class Meta:
model = models.Historia
def __init__(self, *args, **kwargs):
super(HistoriaForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.form_class = 'form-horizontal'
self.helper.form_tag = True
self.helper.form_id = 'nueva_historia_form'
self.helper.form_action = 'nueva_historia'
self.helper.form_show_errors = True
self.helper.error_text_inline = False
self.helper.add_input(Submit('crear', 'Crear'))
Мой вопрос заключается в том, как я могу изменить виджет поля peso
без создания нового подкласса widget
, поскольку django-crispy-forms
уже определяет объект макета. Также обратите внимание, что я не хочу перечислять все остальные поля, чтобы сделать это так:
self.helper.layout = Layout(
Fieldset(
'Legend',
'nombre',
'apellido',
AppendedText('peso', 'kg')
),
ButtonHolder(
Submit('submit', 'Submit', css_class='button white')
)
)
так как мне придется продолжать редактировать макет помощника, если я решу добавить новые поля в свою модель, из которых стандартные виджеты уже очень полезны.
Редактировать: я также видел методы доступа к макетам в помощнике, таком как self.helper.layout[0] = AppendedText('peso', 'kg')
, но я не знаю индекс поля, которое я хотел бы изменить, и было бы намного лучше, если бы я мог просто написать self.helper.layout['peso'] = AppendedText('peso', 'kg')