【问题标题】:How to add an attribute to an option in a select form in django python如何在 django python 的选择表单中为选项添加属性
【发布时间】:2019-03-21 13:06:11
【问题描述】:

我有模型

类tipo_pago(models.Model):

descripcion = models.CharField(max_length=20)
banco_req   = models.BooleanField(default=False, verbose_name="Requiere banco", help_text="Activa esta casilla si se requiere el banco de origen")
status      = models.BooleanField(default=True)

class cliente_pago(models.Model):

tEstado = (
    ('pagado','Pagado'),
    ('pendiente','Pendiente'),
    ('cancelado','Cancelado'),
)

cliente     = models.ForeignKey('cliente',blank=False,null=True,on_delete=models.SET_NULL)
fecha       = models.DateTimeField(default=timezone.now)
fecha_pago  = models.DateField()
tipo_pago   = models.ForeignKey('tipo_pago',blank=False,null=True,on_delete=models.SET_NULL)
banco       = models.ForeignKey('banco', blank=True, null=True,on_delete=models.SET_NULL)
referencia  = models.CharField(max_length=25)
cuenta      = models.ForeignKey('cuenta',blank=False,null=True,on_delete=models.SET_NULL)
importe     = models.FloatField(default=0)
pago        = models.FloatField(default=0)
saldo       = models.FloatField(default=0)
observacion = models.TextField(blank=True,null=True)
estado      = models.CharField(max_length=10,default='pendiente',choices=tEstado)

我要填写的表格是下一张:

class cliente_pagoModal(CustomModelForm):

class Meta:
    model   = cliente_pago
    exclude = ('fecha','pago','saldo','estado',)

在 cliente_pago 表单中的“tipo_pago”字段中我想添加一个数据参数

现在看起来像这样:

Transferencia bancar

选择>

但我希望它看起来像这样

Efectivo

支票

Transferencia bancar

选择>

我正在使用 python 3.7 和 django 2.0.8

【问题讨论】:

标签: python django


【解决方案1】:

如果data-banco_req 的值是循环的计数,您可以在模板中构建select 元素并迭代选择:

{% with field=form.tipo_pago %}
<label for="{{ field.auto_id }}">{{ field.label }}</label> 
<select name="{{ field.html_name }}" class="form-control" required="" id="{{ field.id_for_label }}">
  <option value="" selected="">---------</option>
  {% for choice in field %}
  <option value="{{ choice.data.value }}" data-banco_req="{{ forloop.counter0 }}">{{ choice.choice_label }}</option>
  {% endfor %}
</select>
{% endwith %}

【讨论】:

  • 我明白了,关键是我需要从字段的模型中获取数据值
  • 我明白了,关键是我需要从字段模型和文件“forms.py”中获取数据值。我想找到一种自动化的方法来解决这个问题,而不是在我的模态中绘制代码
  • banco_req 模型上的banco_req 字段是BooleanField。数字 0、1、2 是从哪里来的?
  • 这是一个拼写错误
  • 好的。您已经说过“我想在 cliente_pago 表单中添加一个数据参数”。 data 参数中的值从何而来?哪个型号的哪个字段?
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 2018-02-22
  • 2021-09-13
  • 2011-09-22
  • 2012-07-02
相关资源
最近更新 更多