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來更好看,如果這是你所關心的。 –