{"id":115,"date":"2009-08-11T10:08:27","date_gmt":"2009-08-11T08:08:27","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=115"},"modified":"2009-10-04T22:26:03","modified_gmt":"2009-10-04T20:26:03","slug":"utiliser-un-package-python-pour-ses-models","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2009\/08\/11\/utiliser-un-package-python-pour-ses-models\/","title":{"rendered":"utiliser un package python pour ses models"},"content":{"rendered":"<p>Il devient rapidement assez ennuyeux de n&#8217;avoir qu&#8217;un seul fichier Models.py pour y ranger tout les models de sa petite application django en cours de dev. On r\u00e9fl\u00e9chit alors quelques secondes et l\u00e0, miracle (Eur\u00e9ka m\u00eame), une id\u00e9e jaillit. <\/p>\n<p>Pourquoi ne pas utiliser un package. Aussit\u00f4t dit, aussit\u00f4t fait. Un petit repertoire Models, tout plein de fichier .py \u00e0 l&#8217;int\u00e9rieur pour nos models. Un splendide __init__.py qui importe les models que l&#8217;on veut que le syncdb trouve en parcourant automatiquement nos apps et le tour est jouer. <\/p>\n<p>Oui \u2026 mais en fait Non. <\/p>\n<p>Parce que l\u00e0, Oh Mis\u00e8re, Oh d\u00e9sespoir, le vilain syncdb ne trouve aucun de nos modules. Et c&#8217;est normal. Il manque quelque chose, un truc pas du tout document\u00e9 dans la doc (il y a d&#8217;ailleurs un ticket \u00e0 propos de ce manque de documentation). <\/p>\n<p>Il faut indiquer, dans chaque classe mod\u00e8le, \u00e0 traver la classe Meta, \u00e0 quelle application appartient notre models. Par exemple pour une classe Post appartenant \u00e0 l&#8217;app blog_app, \u00e7a donnerait :<\/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> Post <span class=\"br0\">&#40;<\/span> models.<span class=\"me1\">Model<\/span> <span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; \u2026...<br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">class<\/span> Meta:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; app_label <span class=\"sy0\">=<\/span> <span class=\"st0\">'blog_app'<\/span><\/div><\/div>\n<p>Et voil\u00e0, comme cela, \u00e7a fonctionne. Facile n&#8217;est ce pas ? <\/p>\n<p>Enfin, quand on le sait.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il devient rapidement assez ennuyeux de n&#8217;avoir qu&#8217;un seul fichier Models.py pour y ranger tout les models de sa petite application django en cours de dev. On r\u00e9fl\u00e9chit alors quelques secondes et l\u00e0, miracle (Eur\u00e9ka m\u00eame), une id\u00e9e jaillit. Pourquoi ne pas utiliser un package. Aussit\u00f4t dit, aussit\u00f4t fait. Un petit repertoire Models, tout plein &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2009\/08\/11\/utiliser-un-package-python-pour-ses-models\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">utiliser un package python pour ses models<\/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-115","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-1R","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/115","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=115"}],"version-history":[{"count":5,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/115\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}