2009-10-04 3 views
1

J'ai un modèle Django avec un champ de texte. Je voudrais modifier le contenu du champ de texte avant de le présenter à l'utilisateur dans Django Admin.Django: Comment modifier un champ de texte avant de le montrer dans l'admin

Je m'attendais à voir l'équivalent du signal de post_load mais il ne semble pas exister.

Pour être plus précis:

J'ai un champ de texte qui prend l'entrée d'utilisateur. Dans ce champ de texte, il y a un séparateur en lecture plus. Texte avant le séparateur va aller dans le champ introtext, tout après va dans le champ fulltext.

En même temps, je veux seulement montrer le champ de texte de l'utilisateur 1 quand ils éditent l'article.

Mon plan consistait à on_load à lire les données du champ introtext et fulltext et à les combiner en texte intégral. Sur pre_save, je diviserais le texte en utilisant le séparateur read more et stocker l'intro dans l'introtext et le reste en fulltext.

Ainsi, avant que le formulaire est affiché, je dois remplir le champ avec texte intégral

introtext + '<!--readmore-->' + fulltext 

et je dois pouvoir le faire pour les éléments existants.

+0

Hé, Avez-vous trouvé la solution? Avez-vous du code? :) –

Répondre

1

Il n'y a pas de post-chargement car il n'y a pas de fonction de chargement.

Le chargement de l'instance se fait en init fonction, donc la bonne réponse est d'utiliser le signal post_init.

2

Jetez un oeil dans Providing your own form pour les pages d'administration. Une fois que vous avez votre propre formulaire, vous pouvez utiliser le paramètre par défaut dans le formulaire pour fournir la valeur initiale souhaitée. Voir les documents sur le Initial param pour le champ de formulaire. Comme ce lien vous le montrera, il est possible d'utiliser un callable ou une constante comme valeur initiale.

Questions connexes