{"id":1403,"date":"2011-05-03T23:57:40","date_gmt":"2011-05-03T21:57:40","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=1403"},"modified":"2011-05-03T23:58:23","modified_gmt":"2011-05-03T21:58:23","slug":"admin-django-deux-petits-tips-pour-les-change_list","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2011\/05\/03\/admin-django-deux-petits-tips-pour-les-change_list\/","title":{"rendered":"Admin django, deux petits tips pour les change_list"},"content":{"rendered":"<p>L&#8217;admin django est vraiment un bonheur pour la productivit\u00e9. On peut faire plein de choses en moins de temps qu&#8217;il n&#8217;en faut pour \u00e9crire le descriptif des choses en questions.<\/p>\n<p>Apr\u00e8s avoir pass\u00e9 quelques heures \u00e0 farfouiller dans la doc et \u00e0 faire quelques tests, je me suis dit qu&#8217;il n&#8217;y avait pas de raisons que je garde mes d\u00e9couvertes pour moi.<\/p>\n<p>Voici donc un premier billet pour partager les plus utiles avec vous.<\/p>\n<h2>list_display, comment changer l&#8217;ent\u00eate d&#8217;une colonne fonction.<\/h2>\n<p>On sait tous comment configurer les colonnes que l&#8217;on va afficher dans la vue en liste des content_type. En utilisant list_display. Mais est ce que cela ne vous ai jamais arriv\u00e9 de vouloir afficher le r\u00e9sultat d&#8217;une fonction&nbsp;?<\/p>\n<p>Aucun probl\u00e8me, il suffit de mettre le nom de la fonction dans list_display. Oui c&#8217;est vrai, sauf que.. sauf que l&#8217;ent\u00eate de colonne c&#8217;est le nom de la fonction.. Et \u00e7a, ce n&#8217;est pas tr\u00e8s joli.<\/p>\n<p>Sauf que, sauf que django pense \u00e0 tout. Pour pouvoir afficher un intitul\u00e9 de colonne sympa au lieu du nom de la fonction, il suffit de rajouter \u00e0 votre fonction un attribut short_description qui contiendra l&#8217;intitul\u00e9 voulu.<\/p>\n<p>Un petit exemple&nbsp;:<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\"><span class=\"kw1\">class<\/span> TestAdmin <span class=\"br0\">&#40;<\/span>admin.<span class=\"me1\">ModelAdmin<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; list_display <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">'name'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'foo'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'bar'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'super_function'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"kw1\">class<\/span> Test <span class=\"br0\">&#40;<\/span>model.<span class=\"me1\">Models<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; \u2026<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">def<\/span> super_function<span class=\"br0\">&#40;<\/span><span class=\"kw2\">self<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; \u2026.<br \/>\n&nbsp; &nbsp;<span class=\"me1\">super_function<\/span>.<span class=\"me1\">short_description<\/span> <span class=\"sy0\">=<\/span>u<span class=\"st0\">'mon intitul\u00e9 de colonne qui tue'<\/span><\/div><\/div>\n<h2>list_display, comment utiliser du HTML dans les colonnes .<\/h2>\n<p>De m\u00eame, il se peut que votre super fonction qui tue, renvoie non pas une valeur simple (genre un nombre) mais du code html (que vous aurez bien entendu g\u00e9n\u00e9r\u00e9 avec un template). Sauf que l\u00e0, oh rage, oh d\u00e9sespoir. Vous avez beau faire tout les mark_safe du monde, rien n&#8217;y fait. Votre code est escaped&#8230;<\/p>\n<p>Comment modifier \u00e7a&nbsp;? La encore, \u00e7a passe par un attribut de fonction, allow_tags qu&#8217;il vous suffira de mettre \u00e0 True. Et miracle, \u00e7a fonctionne.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;admin django est vraiment un bonheur pour la productivit\u00e9. On peut faire plein de choses en moins de temps qu&#8217;il n&#8217;en faut pour \u00e9crire le descriptif des choses en questions. Apr\u00e8s avoir pass\u00e9 quelques heures \u00e0 farfouiller dans la doc et \u00e0 faire quelques tests, je me suis dit qu&#8217;il n&#8217;y avait pas de raisons &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2011\/05\/03\/admin-django-deux-petits-tips-pour-les-change_list\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Admin django, deux petits tips pour les change_list<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[99,98],"class_list":["post-1403","post","type-post","status-publish","format-standard","hentry","category-django","tag-django","tag-python"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-mD","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=1403"}],"version-history":[{"count":2,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1403\/revisions"}],"predecessor-version":[{"id":1405,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1403\/revisions\/1405"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=1403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=1403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=1403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}