Django - 在模板中单独呈现 CheckboxSelectMultiple() 小部件(手动)

标签 django django-forms

我有这两个模型:

模型.py

class App(models.Model):
    app_name = models.SlugField(max_length=50)
    options_loaded = models.ManyToManyField(Option)
    created_by = models.ForeignKey(User)

    def __unicode__(self):
        return self.name

class Option(models.Model):
    option_name = models.SlugField(max_length=50)
    condition = models.BooleanField('Enable condition')
    option = models.BooleanField('Enable option1')
    created_by = models.ForeignKey(User)

    def __unicode__(self):
        return self.option_name

我想呈现一个看起来像这样的表单,其中复选框来自不同的模型(来自带有 CheckboxSelectMultiple() 小部件的 M2M 字段的第一列),Option_name 可以是 <a href="/link/">Option_name</a>

enter image description here

这可能吗?

最佳答案

这是我的简单解决方案:在模板中手动渲染 CheckboxSelectMultiple()

<table>
<thead>
  <tr>
    <td>&nbsp;</td>
    <td>V</td>
    <td>S</td>
  </tr>
</thead>    
{% for pk, choice in form.options.field.widget.choices %}
<tr>
  <td><a href="/link/{{ choice }}">{{ choice }}</a></td>
  <td>
    <label for="id_options_{{ forloop.counter0 }}">
      <input {% for m2moption in model.m2moptions.all %}{% if option.pk == pk %}checked="checked"{% endif %}{% endfor %} type="checkbox" id="id_options_{{ forloop.counter0 }}" value="{{ pk }}" name="options" />
    </label>
  </td>
</tr>
{% endfor %}                
</table>

关于Django - 在模板中单独呈现 CheckboxSelectMultiple() 小部件(手动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323724/

相关文章:

Django:使用内联表单集时上传的文件丢失

python - Django form.is_valid 不断抛出 KeyError

具有动态表单的 Django FormWizard

django 管理员 : queryset filter not working

python - django-多对多字段上的文件上传

python - Django - 在 ModelForm 中添加密码验证

jquery - Django/Jquery UI 对话框 - 如何将 Django 与 JqueryUI 对话框集成?

python - Django:为每个实例注册模板过滤器/标签

django - 网址无效的Django 1.4导入错误语法

python - Django utf-8 电子邮件带有损坏的符号