0

我想显示一个包含一组模型对象的表格。使用FormHelper的香脆表格(django)表格

我的模型类:

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') 

我的表单类:

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), } 
    ) 

所以我的问题是如何使通过不beeing编辑包含damagekinds的所有名称表,所以才显示这些。和使用crispy_forms FormHelper,而不是将其编码到模板中。

在此先感谢。

回答

0

我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 %} 
+0

但是这看起来不象的最好方式,不应该由表单助手/ DamageKindList形式进行? – nicksheen

+1

由于这个值不是任何http命令(GET,POST,PUT,DELETE)的一部分,你可能想要执行,它将表现为表单的地方在哪里?这只是一个简单的例子 - 你可以重新设计它,并添加引导类或其他CSS来更好看,如果这是你所关心的。 –