如何在Django Python中以选择形式向选项添加属性

时间:2018-10-16 22:39:51

标签: python django

我有模特

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”中添加数据参数

现在看起来像这样:

<选择name =“ tipo_pago” class =“ form-control” required =“” id =“ id_tipo_pago”>   

但是我希望它看起来像这样

<选择name =“ tipo_pago” class =“ form-control” required =“” id =“ id_tipo_pago”>   

<选项value =“ 3” data-banco_req =“ 0”> Efectivo

<选项value =“ 2” data-banco_req =“ 1”>支票

<选项value =“ 1” data-banco_req =“ 2”> Transferencia bancar

我正在使用python 3.7和Django 2.0.8

1 个答案:

答案 0 :(得分:0)

如果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 %}