{"id":1289,"date":"2011-02-12T20:14:04","date_gmt":"2011-02-12T18:14:04","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=1289"},"modified":"2011-05-05T17:45:23","modified_gmt":"2011-05-05T15:45:23","slug":"m2m-tout-petite-astuce","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/","title":{"rendered":"M2m, tout petite astuce"},"content":{"rendered":"<p>Il faut parfois utiliser des m2m. Dans django, il y a deux moyens de les utiliser. Soit d&#8217;une fa\u00e7on simple, en d\u00e9clarant juste un ManyToManyField soit en passant par une table explicite gr\u00e2ce \u00e0 l&#8217;argument through.<\/p>\n<p>L&#8217;argument through permet d&#8217;avoir une table explicitement d\u00e9clar\u00e9 que l&#8217;on peut donc manipuler avec l&#8217;ORM.<\/p>\n<p>Mais si on utilise la m\u00e9thode commune, celle o\u00f9 c&#8217;est django qui fait tout, on pourrait avoir l&#8217;impression que l&#8217;on a alors, plus acc\u00e8s \u00e0 cette table de jointure. Ce n&#8217;est pas utile allez vous me dire, on s&#8217;en fout, la seule info que l&#8217;on manque c&#8217;est la pk des tuples.<\/p>\n<p>C&#8217;est vrai dans la plupart des cas. Mais comment faire si vous veniez \u00e0 avoir besoin de pouvoir mettre la main sur ces PK\u00a0? Si par exemple vous voulez synchroniser des choses\u00a0??<\/p>\n<p>Et bien, les choses sont bien faites en django. Il existe en effet une donn\u00e9es membres through qui permet de r\u00e9cup\u00e9rer la table cr\u00e9er automatiquement dans django.<\/p>\n<p>Un petit exemple (en reprenant celui de django)<\/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> Topping<span class=\"br0\">&#40;<\/span>models.<span class=\"me1\">Model<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n<span class=\"co1\"># ...<\/span><br \/>\n<span class=\"kw1\">class<\/span> Pizza<span class=\"br0\">&#40;<\/span>models.<span class=\"me1\">Model<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n<span class=\"co1\"># ...<\/span><br \/>\n&nbsp; &nbsp; toppings <span class=\"sy0\">=<\/span> models.<span class=\"me1\">ManyToManyField<\/span><span class=\"br0\">&#40;<\/span>Topping<span class=\"br0\">&#41;<\/span><\/div><\/div>\n<p>pour avoir acc\u00e9s \u00e0 la table qui relie les Pizza au Topping il suffit de faire\u00a0:<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\">Pizza.<span class=\"me1\">toppings<\/span>.<span class=\"me1\">through<\/span><\/div><\/div>\n<\/p>\n<p>et donc pour filter il suffit de faire\u00a0:<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\">Pizza.<span class=\"me1\">toppings<\/span>.<span class=\"me1\">through<\/span>.<span class=\"me1\">objects<\/span>.<span class=\"kw2\">filter<\/span> <span class=\"br0\">&#40;<\/span>\u2026. <span class=\"br0\">&#41;<\/span><\/div><\/div>\n<\/p>\n<p>Et voil\u00e0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il faut parfois utiliser des m2m. Dans django, il y a deux moyens de les utiliser. Soit d&#8217;une fa\u00e7on simple, en d\u00e9clarant juste un ManyToManyField soit en passant par une table explicite gr\u00e2ce \u00e0 l&#8217;argument through. L&#8217;argument through permet d&#8217;avoir une table explicitement d\u00e9clar\u00e9 que l&#8217;on peut donc manipuler avec l&#8217;ORM. Mais si on utilise &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">M2m, tout petite astuce<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_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},"jetpack_post_was_ever_published":false},"categories":[6],"tags":[99,98],"class_list":["post-1289","post","type-post","status-publish","format-standard","hentry","category-django","tag-django","tag-python"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l&#039;utilisation d&#039;un ManyToManyField\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"J-Mad\"\/>\n\t<meta name=\"keywords\" content=\"django,python\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Le Mad Blog | juste un blog\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"M2m, tout petite astuce | Le Mad Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l&#039;utilisation d&#039;un ManyToManyField\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-02-12T18:14:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-05-05T15:45:23+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"M2m, tout petite astuce | Le Mad Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l&#039;utilisation d&#039;un ManyToManyField\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#article\",\"name\":\"M2m, tout petite astuce | Le Mad Blog\",\"headline\":\"M2m, tout petite astuce\",\"author\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\"},\"datePublished\":\"2011-02-12T20:14:04+01:00\",\"dateModified\":\"2011-05-05T17:45:23+02:00\",\"inLanguage\":\"fr-fr\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#webpage\"},\"articleSection\":\"Django, Django, Python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"name\":\"D\\u00e9veloppement\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"position\":2,\"name\":\"D\\u00e9veloppement\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"name\":\"Python\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"position\":3,\"name\":\"Python\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"name\":\"Django\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"name\":\"D\\u00e9veloppement\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"position\":4,\"name\":\"Django\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#listItem\",\"name\":\"M2m, tout petite astuce\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"name\":\"Python\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#listItem\",\"position\":5,\"name\":\"M2m, tout petite astuce\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"name\":\"Django\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\",\"name\":\"Le Mad Blog\",\"description\":\"juste un blog\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/\",\"name\":\"J-Mad\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6eb44e8eb2792583de23c66deb033f8b5ef4f7f7c535464d77cb9f643012d138?s=96&d=retro&r=g\",\"width\":96,\"height\":96,\"caption\":\"J-Mad\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#webpage\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/\",\"name\":\"M2m, tout petite astuce | Le Mad Blog\",\"description\":\"petite astuce pour r\\u00e9cup\\u00e9rer un acc\\u00e8s \\u00e0 la table cr\\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField\",\"inLanguage\":\"fr-fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2011\\\/02\\\/12\\\/m2m-tout-petite-astuce\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"datePublished\":\"2011-02-12T20:14:04+01:00\",\"dateModified\":\"2011-05-05T17:45:23+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/\",\"name\":\"Le Mad Blog\",\"description\":\"juste un blog\",\"inLanguage\":\"fr-fr\",\"publisher\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"M2m, tout petite astuce | Le Mad Blog","description":"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField","canonical_url":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/","robots":"max-image-preview:large","keywords":"django,python","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#article","name":"M2m, tout petite astuce | Le Mad Blog","headline":"M2m, tout petite astuce","author":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"publisher":{"@id":"https:\/\/j-mad.com\/blog\/#organization"},"datePublished":"2011-02-12T20:14:04+01:00","dateModified":"2011-05-05T17:45:23+02:00","inLanguage":"fr-fr","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#webpage"},"isPartOf":{"@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#webpage"},"articleSection":"Django, Django, Python"},{"@type":"BreadcrumbList","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/j-mad.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","name":"D\u00e9veloppement"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","position":2,"name":"D\u00e9veloppement","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","name":"Python"},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","position":3,"name":"Python","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","name":"Django"},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","name":"D\u00e9veloppement"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","position":4,"name":"Django","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#listItem","name":"M2m, tout petite astuce"},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","name":"Python"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#listItem","position":5,"name":"M2m, tout petite astuce","previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","name":"Django"}}]},{"@type":"Organization","@id":"https:\/\/j-mad.com\/blog\/#organization","name":"Le Mad Blog","description":"juste un blog","url":"https:\/\/j-mad.com\/blog\/"},{"@type":"Person","@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author","url":"https:\/\/j-mad.com\/blog\/author\/j-mad\/","name":"J-Mad","image":{"@type":"ImageObject","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/6eb44e8eb2792583de23c66deb033f8b5ef4f7f7c535464d77cb9f643012d138?s=96&d=retro&r=g","width":96,"height":96,"caption":"J-Mad"}},{"@type":"WebPage","@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#webpage","url":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/","name":"M2m, tout petite astuce | Le Mad Blog","description":"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField","inLanguage":"fr-fr","isPartOf":{"@id":"https:\/\/j-mad.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/#breadcrumblist"},"author":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"creator":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"datePublished":"2011-02-12T20:14:04+01:00","dateModified":"2011-05-05T17:45:23+02:00"},{"@type":"WebSite","@id":"https:\/\/j-mad.com\/blog\/#website","url":"https:\/\/j-mad.com\/blog\/","name":"Le Mad Blog","description":"juste un blog","inLanguage":"fr-fr","publisher":{"@id":"https:\/\/j-mad.com\/blog\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Le Mad Blog | juste un blog","og:type":"article","og:title":"M2m, tout petite astuce | Le Mad Blog","og:description":"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField","og:url":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/","article:published_time":"2011-02-12T18:14:04+00:00","article:modified_time":"2011-05-05T15:45:23+00:00","twitter:card":"summary","twitter:title":"M2m, tout petite astuce | Le Mad Blog","twitter:description":"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField"},"aioseo_meta_data":{"post_id":"1289","title":"M2m, tout petite astuce | #site_title","description":"petite astuce pour r\u00e9cup\u00e9rer un acc\u00e8s \u00e0 la table cr\u00e9er automatiquement par django lors de l'utilisation d'un ManyToManyField","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-20 21:12:21","updated":"2025-06-03 21:56:47","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/\" title=\"D\u00e9veloppement\">D\u00e9veloppement<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/\" title=\"Python\">Python<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/\" title=\"Django\">Django<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tM2m, tout petite astuce\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/j-mad.com\/blog"},{"label":"D\u00e9veloppement","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/"},{"label":"Python","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/"},{"label":"Django","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/"},{"label":"M2m, tout petite astuce","link":"https:\/\/j-mad.com\/blog\/2011\/02\/12\/m2m-tout-petite-astuce\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-kN","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1289","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=1289"}],"version-history":[{"count":6,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1289\/revisions"}],"predecessor-version":[{"id":1430,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1289\/revisions\/1430"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=1289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=1289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=1289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}