【问题标题】:django checkbox form for ModelMultipleChoiceField label for each input每个输入的 ModelMultipleChoiceField 标签的 django 复选框表单
【发布时间】:2012-05-07 14:20:17
【问题描述】:

我有以下表格:

from models import MyModel

class MultProgresemosReferenciasForm(forms.Form):
    selected = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                    queryset=MyModel.objects.filter(active=True))                   

我又在以下模板中使用它:

  <form action="" method="post">                                                                                             
      {% for field in form %}                                                                                                
        {{ field }}
      {% endfor %}                                                                                                           
      {% csrf_token %}                                                                                                       
      <input type="submit" value="Submit Selected" />
  </form>                                                                                                                    

呈现以下 html:

  <form action="" method="post">
    <ul>
<li><label for="id_selected_1"><input type="checkbox" name="selected" value="9" id="id_selected_8" /> prog 1420000930 - pp 0.0078125</label></li>
<li><label for="id_selected_2"><input type="checkbox" name="selected" value="10" id="id_selected_9" /> prog 1420001041 - pp 0.00390625</label></li>
    </ul>
      <div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='csrf_token_hash_string...' /></div>
      <input type="submit" value="Submit Selected" />
  </form>

如您所见,模板为每个复选框获取了一些标签(来自模型,该模型有两个字符串字段,其中包含您可以在那里看到的值)。

问题是,我怎样才能进入复选框的标签并自定义它们?我正在尝试使用相同型号的名称,但进行了一些调整。有没有一种简单的方法可以在 django 中实现这一点?

我尝试使用 field.label,但我得到的只是整个 ChoiceField 的“已选择”标签。这不是我想要的,我需要进入每个生成的复选框的标签...

【问题讨论】:

    标签: django checkbox django-templates label


    【解决方案1】:

    我想你想在你的表单中覆盖 label_from_instance

    将调用模型的 unicode 方法来生成对象的字符串表示形式,以用于字段的选择;提供自定义表示,子类 ModelChoiceField 并覆盖 label_from_instance。此方法将接收模型对象,并应返回适合表示它的字符串。例如:

    def label_from_instance(self, obj):
        #custom logic here...
        return smart_unicode(obj)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-20
      • 2020-07-15
      • 2019-02-16
      • 1970-01-01
      • 2011-09-07
      • 2019-03-03
      • 2014-08-15
      • 1970-01-01
      相关资源
      最近更新 更多