209 votes

Django - itérer sur les noms de champ instance modèle et valeurs en modèle

Je suis en train de créer un modèle de base pour afficher l'instance sélectionnée de valeurs de champ, à côté de leurs noms. Pensez à cela comme un standard de sortie des valeurs de l'instance dans la forme d'un tableau avec le nom du champ (verbose_name spécifiquement si cela est spécifié sur le terrain) dans la première colonne et la valeur de ce champ dans la deuxième colonne.

Par exemple, disons que nous avons le modèle suivant définition:

class Client(Model):
    name = CharField(max_length=150)
    email = EmailField(max_length=100, verbose_name="E-mail")

Je veux qu'il soit sortie dans le modèle comme (à supposer un exemple avec les valeurs de donnée):

Field Name      Field Value
----------      -----------
Name            Wayne Koorts
E-mail          waynes@email.com

Ce que je suis en train de réaliser est d'être capable de passer une instance du modèle à un modèle et être en mesure de parcourir de façon dynamique dans le modèle, quelque chose comme ceci:

<table>
    {% for field in fields %}
        <tr>
            <td>{{ field.name }}</td>
            <td>{{ field.value }}</td>
        </tr>
    {% endfor %}
</table>

Est-il un pur, "Django d'approuver une façon de le faire? Il semble comme une tâche très commune, et j'ai besoin de le faire souvent pour ce projet particulier.

197voto

vous donnera les noms de champ tous du modèle, vous pouvez utiliser pour travailler votre chemin vers le nom verbeux, et `` pour obtenir la valeur du modèle.

86voto

uszywieloryba Points 1240

Vous pouvez utiliser le sérialiseur de queryset de Django à-python .

Vient de mettre le code suivant dans votre point de vue :

Et puis dans le modèle :

Son grand avantage est le fait qu’il gère les domaines de la relation.

Pour le sous-ensemble de champs essayer :

81voto

Roger Points 1036

Enfin trouvé une bonne solution pour cela sur la liste de diffusion dev:

Dans l’affichage, ajoutez :

dans le modèle, ajoutez :

26voto

shacker Points 3348

Voici une autre approche en utilisant une méthode. Cette version résout les champs Liste de choix/choice, ignore les champs vides et vous permet d’exclure des champs spécifiques.

Puis dans votre modèle :

15voto

olofom Points 613

OK, je sais que c’est un peu tard, mais depuis que je suis tombé sur ceci avant de trouver la bonne réponse alors peut-être quelqu'un d’autre.

De la documentation de django:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X