Table 在 crispy-forms (django) 中使用 FormHelper

Table in crispy-forms (django) using FormHelper

我想展示一个包含一组模型对象的 table。

我的模型class:

from django.dbfrom django.db import models
from django.utils.translation import ugettext_lazy as _

class DamageKind(models.Model):

    name = models.CharField(_('damage kind'), max_length=64)
    regions = models.ManyToManyField(Region)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _('damage kind')
        verbose_name_plural = _('damage kinds')

我的表格class:

from django import forms

from crispy_forms.helper import FormHelper

from .models import DamageKind


class DamageKindList(forms.Form):

    def __init__(self, *args, **kwargs):
        self.damagekinds = kwargs.pop('damagekinds', [])
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        super().__init__(*args, **kwargs)

我的基本模板base.html:

<!DOCTYPE html>
<html>
  <body>
    {% block list %}

    {% endblock %}
  </body>
</html>

我的list_damagekinds.html:

{% extends "./base.html" %}                                                                   
{% load crispy_forms_tags %}                                                                  

{% block list %}                                                                              
     <form action="" method="post">                                                           
       {% csrf_token %}                                                                       
       {{ damagekind_form }}                                                                  
     </form>                                                                                  
{% endblock %}

和我的 views.py:

def list_damagekinds(request):
    damagekinds = DamageKind.objects.all()
    return render(
        request,
        'damage/list_damagekinds.html',
        {'damagekind_form': DamageKindList(damagekinds=damagekinds), }
    )

所以我的问题是如何通过不使用 editable 来制作一个包含所有 damagekinds 名称的 table,所以只显示这些。并且 with 使用 crispy_forms FormHelper 而不是将其编码到模板中。

提前致谢。

我的list_damagekinds.html

{% extends "./base.html" %}                                                                   
{% load crispy_forms_tags %}                                                                  

{% block list %}                                                                              
     <form action="" method="post">                                                           
       {% csrf_token %}               

       <table>                                                 
          {% for obj in damagekind_form %}        
             <tr> {{ obj.name }} </tr>
          {% endfor %}
       </table>      

     </form>                                                                                  
{% endblock %}