gpt4 book ai didi

python - 使用布局对象 AppendText 更改 django-crispy-forms 中仅一个字段的小部件

转载 作者:行者123 更新时间:2023-12-02 01:42:45 24 4
gpt4 key购买 nike

我正在使用django-crispy-forms渲染 django 中模型的形式。 django-crispy-forms 已经与 Twitter Bootstrap 很好地集成并为 AppdedText 小部件定义了一个布局对象:

AppendedText widget

我的 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)

我在forms.py中定义了以下modelform:

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 字段的小部件,而无需从 django-crispy-forms 开始创建新的 widget 子类> 已经定义了一个布局对象。另请注意,我不想枚举所有其他字段来执行此操作,如下所示:

self.helper.layout = Layout(
Fieldset(
'Legend',
'nombre',
'apellido',
AppendedText('peso', 'kg')
),
ButtonHolder(
Submit('submit', 'Submit', css_class='button white')
)
)

因为如果我决定在模型中添加新字段(其中标准小部件已经非常有用),我将不得不继续编辑辅助布局。

编辑:我还看到了在帮助器中访问布局的方法,例如 self.helper.layout[0] = AppendText('peso', 'kg') 但我不知道我想更改的字段的索引,如果我可以只写 self.helper.layout['peso'] = AppdedText('peso', 'kg ')

最佳答案

django-crispy-forms 确实有一个用于此类事情的 API: http://django-crispy-forms.readthedocs.org/en/latest/dynamic_layouts.html

你可以简单地这样做:

form.helper['peso'].wrap(AppendedText, "kg")

关于python - 使用布局对象 AppendText 更改 django-crispy-forms 中仅一个字段的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com