Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.html 32KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>Sortie de Django 1.0, une année de nouveautés — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20080902-sortie-de-django-10-une-annee-de-nouveautes">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">Sortie de Django 1.0, une année de nouveautés</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/django_.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <p>J'étais assez sceptique lors de l'<a href="https://larlet.fr/david/biologeek/archives/20080616-django-1-0-nom-de-code-arlesienne/">annonce de la roadmap avant l'été</a> mais il faut bien avouer que ça n'a pas chômé pendant ces vacances et que les développeurs sont arrivés à bout des fonctionnalités annoncées. <em>Chapeau bas.</em> Je ne vais pas faire un inventaire exhaustif des nouveautés (je vous laisse consulter <a href="http://docs.djangoproject.com/en/dev/releases/1.0/">la page dédiée</a>) mais plutôt une liste des ajouts vraiment intéressants au quotidien au cours de cette dernière année.</p>
  46. <h2>Support complet de l'Unicode</h2>
  47. <p>Mergée <a href="http://code.djangoproject.com/changeset/5609">l'été dernier</a>, le nom de cette branche est assez explicite. Terminés les problèmes de <a href="http://sebsauvage.net/python/charsets_et_encoding.html">charset/encoding</a> lorsqu'on a des données propres, sinon iconv est votre ami.</p>
  48. <h2>Commandes personnalisées</h2>
  49. <p>La refactorisation des commandes internes de Django permet <a href="http://code.djangoproject.com/changeset/5898">depuis un an</a> d'ajouter très facilement des commandes personnalisées à votre projet. Vous pouvez par exemple voir ce que ça donne sur le <a href="http://code.biologeek.com/file/4e25f872a753/contextual/management/commands/crawlfeeds.py">script qui récupère les flux affichés</a> dans la sidebar de ce site.</p>
  50. <h2>Échappement des variables dans les templates</h2>
  51. <p>Changement de la politique de sécurité en <a href="http://code.djangoproject.com/changeset/6671">novembre dernier</a> avec les variables échappées par défaut. Selon les cas, ça peut être pénible pour les mises à jour mais c'était à mon avis utile pour permettre aux débutants de ne pas faire trop d'erreurs à ce niveau. Il est toujours possible de contourner cette restriction via le filtre <code>|safe</code> ou le tag <code>autoescape</code> (great power, great responsabilities, tout ça).</p>
  52. <h2>Refactorisation des querysets</h2>
  53. <p><a href="http://code.djangoproject.com/changeset/7477">Fin avril</a>, un énorme boulot est effectué en interne afin de corriger pas mal de bugs récalcitrants, ça permet (entre autres) d'ordonner plus facilement les querysets, de spécifier les champs couverts par un <code>select_related</code>, d'optimiser la façon de filtrer les résultats, de mettre à jour plusieurs instances d'un coup et surtout, le retour de l'héritage au niveau des modèles !</p>
  54. <h2>Modifications dans l'upload de fichiers</h2>
  55. <p><a href="http://code.djangoproject.com/changeset/7814">Début juillet</a>, ça commence à s'accélérer, il est maintenant possible de lire les fichiers uploadés partie par partie. Ça n'a l'air de rien mais selon les types de fichiers sur lesquels vous travaillez ça peut vraiment faire la différence.</p>
  56. <h2>Nouvelle administration utilisant les newforms</h2>
  57. <p>C'est LA fonctionnalité qui donne à mon avis à Django une longueur d'avance sur les autres frameworks. <a href="http://code.djangoproject.com/changeset/7967">Ajoutée mi-juillet</a>, cette branche permet de générer une interface d'administration qui tient compte des droits utilisateurs, qui est vraiment flexible et customisable. L'interface qui était réservée aux personnes de confiance (administrateur) peut maintenant être utilisée pour développer un site complet. Le problème c'est qu'à partir de cette date là, avec les vacances et les commits qui s'accélèrent il devient plus prudent d'attendre la 1.0 et cette fonctionnalité n'a pas eu la promotion qu'elle méritait à mon avis. Cela dit il est temps de tester sa puissance maintenant, je joue avec depuis quelques jours et c'est vraiment du bonheur.</p>
  58. <h2>Ajout du support géographique</h2>
  59. <p><a href="http://geodjango.org/">GeoDjango</a> est <a href="http://code.djangoproject.com/changeset/8219">enfin ajouté dans les contrib</a>, très beau projet avec énormément de fonctionnalités indispensables lorsque vous commencez à vouloir savoir qui habite près de qui, quelle est la distance parcourue, etc.</p>
  60. <h2>Refactorisation des stockages de fichiers</h2>
  61. <p>Bon celui là c'est <a href="http://code.djangoproject.com/changeset/8244">un peu mon chouchou</a> car je l'ai testé à plusieurs reprises pour faire des retours à <a href="http://gulopine.gamemusic.org/">Marty Alchin</a> et ça m'a mené à partager certains <a href="http://code.larlet.fr/doc/#django-storage">storages utiles pour Django</a>. Il permet par exemple de stocker ses fichiers en local pour du développement et sur S3 pour de la production ou n'importe quelle combinaison possible et imaginable.</p>
  62. <h2>Nouveau système de commentaires</h2>
  63. <p><a href="http://code.djangoproject.com/changeset/8557">Pour finir</a>, ce qui était attendu depuis... toujours, un GSoC est arrivé à terme ! Les commentaires ont été entièrement réécrits, j'utilise une version alpha de cette implémentation et je ne sais pas si je mettrais à jour, peut-être à l'occasion mais elle a l'avantage de ne pas être standard et pour lutter contre le spam on ne fait pas mieux ;-).</p>
  64. <p>Enfin, il y a eu pas mal de ménage de fait sur d'anciennes parties de code (suppression des oldforms/validators entre autres), ce qui le rend plus facilement maintenable et une <a href="http://docs.djangoproject.com/en/dev/">nouvelle documentation</a> propulsée par <a href="http://sphinx.pocoo.org/">Sphinx</a> (l'outil qui mériterait un petit système de tickets pour être tout à fait parfait). <strong>Que du bon.</strong> De mon côté, on peut pas dire que j'ai vraiment avancé sur mes tickets, j'ai pas mal discuté de l'intérêt de l'<a href="http://code.djangoproject.com/ticket/7239">utilisation du tag url dans blocktrans</a> et au final la solution est venue <a href="http://groups.google.com/group/django-developers/browse_thread/thread/5e9d28a878091346">presque par hasard</a> ! J'ai pas eu le temps de m'occuper de tout ce qui était relatif à la séparation des tests mais j'ai mis à jour les traductions (ce qui représentait un sacré boulot, heureusement que j'ai eu de l'aide de <a href="http://www.django-fr.org/contributeurs/">la team fr</a>).</p>
  65. <p>Une année riche en nouveautés qui montre le dynamisme du framework, la 1.0 n'était qu'une étape nécessaire permettant de partir d'une base saine. Il y a encore 2/3 choses qui méritent d'être remises à plat pour la 1.1 mais sinon c'est clairement positif. Avec de telles fondations, il devient de plus en plus facile de développer son projet parfait, en tenant les délais ;-). Il ne manque plus que la sortie de Starcraft 2 pour faire le grand chelem...</p>
  66. <p><strong>PS : ça sort dans quelques heures, un peu de patience, je le publie maintenant suite à une petite erreur de ma part. En attendant qu'est-ce qui vous pousse/retient d'utiliser cette version ?</strong></p>
  67. <p><strong>[edit du soir]</strong> : bon finalement ça commence par <a href="http://www.djangoproject.com/weblog/2008/sep/02/security/">une faille de sécurité</a> qui sera suivie d'une RC1.</p>
  68. <p><strong>[edit du 4 septembre, 1h47]</strong> : sortie de la <a href="http://www.djangoproject.com/weblog/2008/sep/03/1/">version 1.0</a>. Enfin.</p>
  69. <p>La <a href="http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide">page officielle de migration</a> est un bon début si vous n'êtes pas à jour.</p>
  70. </div>
  71. </article>
  72. <footer>
  73. <h6 property="schema:datePublished">— 02/09/2008</h6>
  74. </footer>
  75. </section>
  76. <section>
  77. <div>
  78. <h3>Articles peut-être en rapport</h3>
  79. <ul>
  80. <li><a href="/david/biologeek/archives/20091014-scrum-python-et-django-montpellier/" title="Accès à Scrum, Python et Django à Montpellier">Scrum, Python et Django à Montpellier</a></li>
  81. <li><a href="/david/biologeek/archives/20090221-son-propre-tinyurl-en-python-et-html5-avec-webpy/" title="Accès à Son propre TinyURL en Python et HTML5 avec webpy">Son propre TinyURL en Python et HTML5 avec webpy</a></li>
  82. <li><a href="/david/biologeek/archives/20080521-conferences-django-pour-pycon-fr/" title="Accès à ★ Conférences Django pour PyCon fr">★ Conférences Django pour PyCon fr</a></li>
  83. </ul>
  84. </div>
  85. </section>
  86. <section>
  87. <div id="comments">
  88. <h3>Commentaires</h3>
  89. <div class="comment" typeof="schema:UserComments">
  90. <p class="comment-meta">
  91. <span class="comment-author" property="schema:creator">Thomas</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  92. </p>
  93. <div class="comment-content" property="schema:commentText">
  94. <p>J&#39;attendais cette version pour me mettre à Python et Django. Par où commencer pour apprendre Django 1.0 (le DjangoBook a besoin d&#39;être mis à jour ?) ?</p>
  95. </div>
  96. </div>
  97. <div class="comment" typeof="schema:UserComments">
  98. <p class="comment-meta">
  99. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  100. </p>
  101. <div class="comment-content" property="schema:commentText">
  102. <p>@Thomas : je pense que la nouvelle doc est la seule à être à jour pour l&#39;instant et c&#39;est suffisant pour commencer. Le tutoriel est un bon début : <a href="http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01">http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01</a></p>
  103. </div>
  104. </div>
  105. <div class="comment" typeof="schema:UserComments">
  106. <p class="comment-meta">
  107. <span class="comment-author" property="schema:creator">vincent</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  108. </p>
  109. <div class="comment-content" property="schema:commentText">
  110. <p>@thomas : je crois que oui, le djangobook a besoin d&#39;être mis à jour. Pour commencer, lire la documentation (de préférence la doc de dev&#39; lié par David ci-dessus)</p>
  111. <p>Personnelement j&#39;attendais la release (et le fin de mon stage et donc de mon cursus ingénieur) pour mettre à jour mon développement django actuel (un site perso quoi). Cette version stable devrait amener la reconnaissance que mérite ce framework.</p>
  112. <p>J&#39;étais aussi un peu sceptique sur la roadmap au début, mais vu le travail qu&#39;ils ont fournis !</p>
  113. </div>
  114. </div>
  115. <div class="comment" typeof="schema:UserComments">
  116. <p class="comment-meta">
  117. <span class="comment-author" property="schema:creator">Julien Phalip</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  118. </p>
  119. <div class="comment-content" property="schema:commentText">
  120. <p>Merci pour cette recapitulation des nouveautes et merci pour ta contribution a toi aussi! ;)<br />Je predis un enorme succes pour Django, qui devrait supplanter la plupart des frameworks web durant ces prochains mois.</p>
  121. </div>
  122. </div>
  123. <div class="comment" typeof="schema:UserComments">
  124. <p class="comment-meta">
  125. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  126. </p>
  127. <div class="comment-content" property="schema:commentText">
  128. <p>@vincent : tu t&#39;es fait doublé par Gilles je crois ;-)</p>
  129. <p>@Julien Phalip : merci pour tes relectures, n&#39;hésite pas à passer sur #django-fr un de ces 4.</p>
  130. </div>
  131. </div>
  132. <div class="comment" typeof="schema:UserComments">
  133. <p class="comment-meta">
  134. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  135. </p>
  136. <div class="comment-content" property="schema:commentText">
  137. <p>Même si certains éléments ne sont plus d&#39;actualité, le django book a à mon avis l&#39;intérêt de poser les principes du framework et je dirais même jusqu&#39;à une méthode de développement avec Django. Pour le détail, il faut en effet se référer à la doc officielle.</p>
  138. <p>Si la version 1.0 doit sortir ce jour, je suis étonné qu&#39;elle ne passe pas par le stade des RC, pourtant annoncées. Je n&#39;ai pas suivi la liste django-dev depuis quelques temps, donc ceci peut peut être expliqué cela...</p>
  139. </div>
  140. </div>
  141. <div class="comment" typeof="schema:UserComments">
  142. <p class="comment-meta">
  143. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  144. </p>
  145. <div class="comment-content" property="schema:commentText">
  146. <p>&gt; Si la version 1.0 doit sortir ce jour, je suis étonné qu&#39;elle ne passe pas par le stade des RC, pourtant annoncées.</p>
  147. <p>En fait la Beta2 a plus ou moins le statut de RC. Il y avait du retard donc ils ont mergé les deux si je me rappelle bien.</p>
  148. </div>
  149. </div>
  150. <div class="comment" typeof="schema:UserComments">
  151. <p class="comment-meta">
  152. <span class="comment-author" property="schema:creator">er:k</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  153. </p>
  154. <div class="comment-content" property="schema:commentText">
  155. <p>Info ou intox ? ;-) en tout cas, pas d&#39;infos sur <a href="http://djangoproject.com">http://djangoproject.com</a> sur la sortie de la version 1.0 définitive.</p>
  156. <p>Merci en tout cas pour ce résumé des nouvelles fonctionnalités de Django 1.0 (je pense que l&#39;apparition de l&#39;héritage des modèles [1] est également une nouveauté à souligner) et pour ton travail sur le projet.</p>
  157. <p>[1] <a href="http://www.djangoproject.com/documentation/model-api/#model-inheritance">http://www.djangoproject.com/documentation/model-api/#model-inheritance</a></p>
  158. </div>
  159. </div>
  160. <div class="comment" typeof="schema:UserComments">
  161. <p class="comment-meta">
  162. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">02/09/2008</span> :
  163. </p>
  164. <div class="comment-content" property="schema:commentText">
  165. <p>Comme je le précise en PS, il y avait un problème dans mon code qui a publié le billet alors qu&#39;il était à l&#39;état de brouillon sur le planet de django, du coup j&#39;ai préféré publier plutôt que de faire tomber sur une 404 toute la journée alors que c&#39;est pas officiellement sorti.</p>
  166. <p>Je mettrais à jour le billet lorsque ça sera effectivement le cas (probablement cette nuit pour nous).</p>
  167. </div>
  168. </div>
  169. <div class="comment" typeof="schema:UserComments">
  170. <p class="comment-meta">
  171. <span class="comment-author" property="schema:creator">Efel</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  172. </p>
  173. <div class="comment-content" property="schema:commentText">
  174. <p>J&#39;essaie d&#39;apprendre ce framework qui a l&#39;air vraiment bien conçu, mais ce n&#39;est pas évident de s&#39;y retrouver entre les tutos pour la 0.96 et la pratique dans la 1.0</p>
  175. <p>Existe-t-il (sinon ce serait un bon plan) un document de référence des modifications de syntaxe (ex:maxlength =&gt; max_length). Pour les MAJ cela me paraît intéressant.</p>
  176. <p>Bravo pour le suivi de la feuille de route... je n&#39;y croyais pas trop non plus.</p>
  177. </div>
  178. </div>
  179. <div class="comment" typeof="schema:UserComments">
  180. <p class="comment-meta">
  181. <span class="comment-author" property="schema:creator">Efel</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  182. </p>
  183. <div class="comment-content" property="schema:commentText">
  184. <p>Au temps pour moi, je viens de trouver...</p>
  185. <p><a href="http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide/">http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide/</a></p>
  186. </div>
  187. </div>
  188. <div class="comment" typeof="schema:UserComments">
  189. <p class="comment-meta">
  190. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  191. </p>
  192. <div class="comment-content" property="schema:commentText">
  193. <p>Ah, ils ne m&#39;ont pas fait mentir, ils ont sorti une RC ;-)</p>
  194. <p><a href="http://groups.google.com/group/django-developers/t/db75926db673c071">http://groups.google.com/group/django-developers/t/db75926db673c071</a></p>
  195. <p>En même temps d&#39;ailleurs qu&#39;une annonce de sécurité pour les versions antérieures (0.96, 0.95 et 0.91)</p>
  196. <p><a href="http://groups.google.com/group/django-developers/t/7e5f22acb1dc2d87">http://groups.google.com/group/django-developers/t/7e5f22acb1dc2d87</a></p>
  197. <p>Sinon David, pour toi c&#39;est quoi les 2/3 choses qui doivent être remis à plat pour la 1.1 ??</p>
  198. </div>
  199. </div>
  200. <div class="comment" typeof="schema:UserComments">
  201. <p class="comment-meta">
  202. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  203. </p>
  204. <div class="comment-content" property="schema:commentText">
  205. <p>@NiCoS : agrégation, optimisations (cf #17 entre autres), gestion des applications, multithreading (cf <a href="http://code.djangoproject.com/wiki/DjangoSpecifications/Core/Threading">http://code.djangoproject.com/wiki/DjangoSpecifications/Core/Threading</a>), définition des URL et sûrement un paquet d&#39;autres trucs que j&#39;oublie.</p>
  206. </div>
  207. </div>
  208. <div class="comment" typeof="schema:UserComments">
  209. <p class="comment-meta">
  210. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">08/09/2008</span> :
  211. </p>
  212. <div class="comment-content" property="schema:commentText">
  213. <p>j&#39;ai besoin de plus d&#39;info sur &quot;Nouvelles administrations utilisant les newforms&quot; je dois faire evoluer l&#39;interface d&#39;administration d&#39;un site que j&#39;ai réalisé mais je ne sais pas trop comment m&#39;y prendre et en plus dans mon model &quot;Personne&quot; je dois uploader une photo l&#39;interface admin le fait bien mais n&#39;affiche pas la photo lorsque je retourne a la page &quot;liste&quot; comment resoudre ce probleme Merci</p>
  214. </div>
  215. </div>
  216. <div class="comment" typeof="schema:UserComments">
  217. <p class="comment-meta">
  218. <span class="comment-author" property="schema:creator">JP henskens</span> le <span class="comment-date" property="schema:commentTime">25/09/2008</span> :
  219. </p>
  220. <div class="comment-content" property="schema:commentText">
  221. <p>Bonjour,</p>
  222. <p>Je suis de l&#39;autre coté de la barrière et je m&#39;occupe d&#39;un département ebusiness dans une grosse entreprise. Nous sommes sur le point de choisir un partenaire pour nos dévelopement web et sommes très intéressés par Django.<br />Cependant, j&#39;ai un mal fou à trouver des agences/companies/sociétés qui développent en Django.</p>
  223. <p>Auriez-vous des références (pas des clients mais des &quot;providers&quot;) qui utilisent Django comme framework pour leur clients ? <br />N&#39;importe où dans le monde (avec une préférence pour l&#39;Europe centrale)</p>
  224. <p>D&#39;avance merci !</p>
  225. </div>
  226. </div>
  227. <div class="comment" typeof="schema:UserComments">
  228. <p class="comment-meta">
  229. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">20/01/2009</span> :
  230. </p>
  231. <div class="comment-content" property="schema:commentText">
  232. <p>Salut, j&#39;ai un problème je voudrais redéfinir la méthode save() de mes modèles seulement je ne sais pas quand c&#39;est un update ou une insertion svp renseigner moi un peu dessus en attendant la prochaine version de django comment gerer vous la validation des modèles dans le module admin</p>
  233. </div>
  234. </div>
  235. <div class="comment" typeof="schema:UserComments">
  236. <p class="comment-meta">
  237. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">20/01/2009</span> :
  238. </p>
  239. <div class="comment-content" property="schema:commentText">
  240. <p>@cambuntu : pour ton premier problème, tu peux regarder ce qui est fait <a href="http://bitbucket.org/david/biologeek/src/tip/journal/models.py#cl-95">http://bitbucket.org/david/biologeek/src/tip/journal/models.py#cl-95</a> (c&#39;est du vieux Django, je suis en train de mettre à jour avec la nouvelle admin, mais ça devrait te donner l&#39;idée), c&#39;est aussi expliquer ici <a href="https://larlet.fr/david/biologeek/archives/20080211-astuces-et-bonnes-pratiques-django/">https://larlet.fr/david/biologeek/archives/20080211-astuces-et-bonnes-pratiques-django/</a></p>
  241. <p>Pour vérifier dans save(), il faut faire un test sur self.id, s&#39;il existe il s&#39;agit d&#39;un update.</p>
  242. <p>@ JP henskens : c&#39;est un peu le gros problème actuellement, la demande est de plus en plus forte mais il y a peu de ressources... pas sûr que je doive m&#39;en plaindre remarque ;-).</p>
  243. </div>
  244. </div>
  245. <div class="comment" typeof="schema:UserComments">
  246. <p class="comment-meta">
  247. <span class="comment-author" property="schema:creator">nik</span> le <span class="comment-date" property="schema:commentTime">22/01/2009</span> :
  248. </p>
  249. <div class="comment-content" property="schema:commentText">
  250. <p>Salut, je viens de debuter avec Django mais j&#39;ai un gros pb comment cacher certains champs dans le module admin car tout mes champs sont présent et obligatoire en plus voici mon modèle</p>
  251. <p>class Societe(model.Model):<br /> capital: model.Integer</p>
  252. <p>class Actionnaire(model.Model):<br /> part:model.Integer</p>
  253. <p>Je ne voudrais pas que le champs capital soit actif dans la page d&#39;administration et lorsqu&#39;on enregistre la part d&#39;un actionnaire que celà augmente le capital svp quelque idées Merci</p>
  254. <p>Aussi je m&#39;abonne a la mailing list je poste personne ne repond peut être mon abonnement n&#39;a pas marché guidé moi svp</p>
  255. <p></p>
  256. </div>
  257. </div>
  258. <div class="comment" typeof="schema:UserComments">
  259. <p class="comment-meta">
  260. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">22/01/2009</span> :
  261. </p>
  262. <div class="comment-content" property="schema:commentText">
  263. <p>Merci, beacoup ça marche, svp et la validation du modèle dans le module admin comment faire et aussi mes dates je les veux aux format jour/mois/année dans le module admin et je voudrais aussi que ce soit le format imposé dans mes formulaires mais je n&#39;y arrive pas comment faire svp</p>
  264. </div>
  265. </div>
  266. <div class="comment" typeof="schema:UserComments">
  267. <p class="comment-meta">
  268. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">24/01/2009</span> :
  269. </p>
  270. <div class="comment-content" property="schema:commentText">
  271. <p>@nik : a priori il faut utiliser les signals ou redéfinir la fonction save() du modèle Actionnaire (si j&#39;ai bien compris).</p>
  272. <p>@cambuntu : il faut définir ses propres formulaires pour l&#39;admin et passer l&#39;argument input_formats au DateField pour chacun d&#39;entre eux (un peu fastidieux...).</p>
  273. <p>Et sinon inscrivez-vous sur la liste de diffusion c&#39;est beaucoup plus pratique pour faire du support :<br /><a href="http://lists.afpy.org/mailman/listinfo/django">http://lists.afpy.org/mailman/listinfo/django</a> (nik tu as posté avec quel nom/email ?)</p>
  274. </div>
  275. </div>
  276. <div class="comment" typeof="schema:UserComments">
  277. <p class="comment-meta">
  278. <span class="comment-author" property="schema:creator">nik</span> le <span class="comment-date" property="schema:commentTime">26/01/2009</span> :
  279. </p>
  280. <div class="comment-content" property="schema:commentText">
  281. <p>salut excusez j&#39;ai pas le net a volonté c&#39;est pourquoi je réagit tard bien que le projet me tiens à coeurs</p>
  282. <p>c&#39;est quoi les signals, d&#39;apres ce que je lis sur votre site ils faut redefinir la fonction save() mais mon probleme c&#39;est le montant total il ne doit se modifier que lorsque l&#39;on enregistre un actionnaire il est toujours actifs dont on peut le modifier comment donc le rendre inactifs. avez vous un lien qui montre comment redefinir les formulaires de l&#39;admin.</p>
  283. <p>par rapport aux pb de cambuntu j&#39;ai suivi ce lien <a href="http://docs.djangoproject.com/en/dev/ref/settings/#date-format">http://docs.djangoproject.com/en/dev/ref/settings/#date-format</a> mais ça ne marche pas car je me suis dit que c&#39;est la que django prend le format de date à utiliser à quoi sert il donc.<br /> dans mes formulaires quand je passe la methode input_formats() à un champs ça ne marche plus. Voici ce que je fais<br />dateContribution =forms.DateField(input_formats=&#39;%d/%m/%Y&#39;) <br />mon formulaire n&#39;accepte plus de date à ce moment</p>
  284. </div>
  285. </div>
  286. <div class="comment" typeof="schema:UserComments">
  287. <p class="comment-meta">
  288. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">26/01/2009</span> :
  289. </p>
  290. <div class="comment-content" property="schema:commentText">
  291. <p>La documentation sur les signals est ici :<br /><a href="http://docs.djangoproject.com/en/dev/topics/signals/#topics-signals">http://docs.djangoproject.com/en/dev/topics/signals/#topics-signals</a></p>
  292. <p>et celle pour avoir ses propres formulaires dans l&#39;admin est là :<br /><a href="http://docs.djangoproject.com/en/dev/ref/contrib/admin/#id1">http://docs.djangoproject.com/en/dev/ref/contrib/admin/#id1</a></p>
  293. <p>Je ne comprends pas le problème d&#39;actif/inactif.</p>
  294. <p>L&#39;argument input_formats attend une liste, il faut donc mettre input_formats=[&#39;%d/%m/%Y&#39;] s&#39;il n&#39;y a qu&#39;un élément.</p>
  295. </div>
  296. </div>
  297. <div class="comment" typeof="schema:UserComments">
  298. <p class="comment-meta">
  299. <span class="comment-author" property="schema:creator">nik</span> le <span class="comment-date" property="schema:commentTime">27/01/2009</span> :
  300. </p>
  301. <div class="comment-content" property="schema:commentText">
  302. <p>s.v.p quand je parle d&#39;actif ou inactif c&#39;est ceci vous avez dans votre page un formulaire principale et des formulaires filles vous voulez que le formulaire principale se mette à jours lorsque les formulaires filles sont modifiées, cependant vous ne voulez pas que le formulaires principales soit modifié manuellement il faut donc le rendre inactif qu&#39;on ait accès uniquement en consultations comment donc le faire? <br />lorsqu&#39;on redéfinie le formulaire comment fait on de tout le javascript qui était présent? et dans les list_pages comment fait on aussi pour avoir les dates au formats voulu las bas<br />que pensez vous donc du paramètre date_formats dans le fichier settings</p>
  303. </div>
  304. </div>
  305. <div class="comment" typeof="schema:UserComments">
  306. <p class="comment-meta">
  307. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">27/01/2009</span> :
  308. </p>
  309. <div class="comment-content" property="schema:commentText">
  310. <p>salut, j&#39;ai penser aussi comme nik au paramètre date format du fichier settings mais ça ne marche pas à quoi set il donc, néanmoins je procède comme vous avez conseillé. Cependant dans les pages ou les données sont listés le formats n&#39;est toujours pas changé comment résoudre ce problème la.</p>
  311. <p>S.v.p que pensez vous d&#39;utiliser un fichier print.css pour la générations des report au lieux de passer par reportlab et les pdfs</p>
  312. </div>
  313. </div>
  314. <div class="comment" typeof="schema:UserComments">
  315. <p class="comment-meta">
  316. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">27/01/2009</span> :
  317. </p>
  318. <div class="comment-content" property="schema:commentText">
  319. <p>svp je lis chaque jour cette page il y&#39;a quelque chose que je ne comprend pas les iconv et les storage, s3 expliquer un peut plus</p>
  320. </div>
  321. </div>
  322. <div class="comment" typeof="schema:UserComments">
  323. <p class="comment-meta">
  324. <span class="comment-author" property="schema:creator">cambuntu</span> le <span class="comment-date" property="schema:commentTime">06/02/2009</span> :
  325. </p>
  326. <div class="comment-content" property="schema:commentText">
  327. <p>salut svp que pensez d`utiliser le fichier print.css pour l`impression de nos reports</p>
  328. </div>
  329. </div>
  330. <div class="comment" typeof="schema:UserComments">
  331. <p class="comment-meta">
  332. <span class="comment-author" property="schema:creator">Millicent </span> le <span class="comment-date" property="schema:commentTime">23/03/2010</span> :
  333. </p>
  334. <div class="comment-content" property="schema:commentText">
  335. <p>C&#39;est vraiment très intéressantes nouvelles, bien que je les ai trouvés un peu tard, mais c&#39;était très intéressant de lire ceci, merci beaucoup.</p>
  336. </div>
  337. </div>
  338. </div>
  339. </section>
  340. <footer>
  341. <nav>
  342. <p>
  343. <small>
  344. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  345. </small>
  346. </p>
  347. </nav>
  348. </footer>
  349. </div>
  350. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  351. <script data-no-instant>InstantClick.init()</script>
  352. </body>
  353. </html>