0

Je souhaite afficher une table contenant un ensemble d'objets de modèle.Tableau en formes croustillantes (django) en utilisant FormHelper

Ma classe de modèle:

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

ma forme Classe:

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) 

Mon modèle de base base.html:

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

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

mon list_damagekinds.html:

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

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

et mon views.py:

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

donc ma question est de savoir comment je peux faire un tableau contenant tous les noms des damagekinds de ne pas beeing modifiable, donc juste montrer ceux-ci. Et avec en utilisant le FormHelper crispy_forms et ne pas le coder dans le modèle.

Merci d'avance.

Répondre

0

mon 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

mais qui ressemble à pas la plus belle façon, ne devrait pas être faite que par la forme DamageKindList FormHelper /? – nicksheen

+1

Comme ces valeurs ne sont pas destinées à faire partie d'une commande http (GET, POST, PUT, DELETE), vous pouvez vouloir effectuer, où est le point de le rendre sous forme de formulaire? Ceci est juste un exemple simple - vous pouvez le redessiner et ajouter des classes bootrap ou d'autres css pour un look plus agréable si c'est ce qui vous préoccupe. –