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

それは素敵な方法のように見えない、それはFormHelperの/ DamageKindList-形でなされるべきではないのですか? – nicksheen

+1

この値は、httpコマンド(GET、POST、PUT、DELETE)の一部ではないので、実行したいかもしれませんが、フォームとしてレンダリングする際のポイントはどこですか?これはほんの単純な例です - あなたが気になるものなら、それを再設計し、bootrap-classesや他のCSSを追加してより良い外観にすることができます。 –

関連する問題