django-crispy-formsを使用して、 djangoでモデルのフォームをレンダリングしています。django-crispy-formsはすでにTwitterBootstrapと非常によく統合さ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')