{"id":10025,"date":"2020-04-30T10:52:49","date_gmt":"2020-04-30T05:22:49","guid":{"rendered":"https:\/\/www.botreetechnologies.com\/blog\/?p=10025"},"modified":"2020-12-02T17:46:17","modified_gmt":"2020-12-02T12:16:17","slug":"definitive-guide-for-django-model-managers","status":"publish","type":"post","link":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/","title":{"rendered":"Definitive Guide For Django Model Managers"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What is a manager?<\/h2>\n\n\n\n<p>A manager is an interface through which database query operations are provided to django models. It is some kind of &#8216;gate&#8217; between application and database.<\/p>\n\n\n\n<p>Hence,&nbsp; there exists at least one manager for every model in a django application.<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/800ba28f93edc4546f6c741a2bbc6589.js\"><\/script><\/p>\n\n\n\n<p>adds the default manager with the name objects is used.<\/p>\n\n\n\n<p>We can even rename the manager&#8217;s name on a pre model basis . So let us consider a Student Model.<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/b50eec103c2fb9a43cea9393193fdc34.js\"><\/script><\/p>\n\n\n\n<p>Here, we can access Student model queries like Student.student.all() where student is the manager&#8217;s name.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Benefits of using managers in your code:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>Clean code.<\/li><li>Efficient code.<\/li><li>Maintainable code.<\/li><li>Writing common query code for the model which are reusable. (DRY rule i.e. Don\u2019t repeat yourself)<\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How to write custom managers?<\/strong><\/h3>\n\n\n\n<p>A custom Manager is created by extending a base <strong>Manager<\/strong> class in a particular model and by instantiating the created custom manager within the model.<\/p>\n\n\n\n<p>We have created a custom manager by name <strong>StudentManager<\/strong> and thus, our managers looks like:-<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/74cfdf8ec767a9dac910617c9d850d2a.js\"><\/script><\/p>\n\n\n\n<p>Thus, to access a Student Model with different queries defined in the StudentManager, it can be done like this &#8211;<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/0e941521d9bbf95ab70fafbb8bd8492b.js\"><\/script><\/p>\n\n\n\n<p>Though in the given examples we have returned the queryset, one can return anything like a list, dictionary, attribute value etc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Modifying a manager initial QuerySet<\/strong><\/h2>\n\n\n\n<p>A Manager\u2019s base QuerySet returns all objects in the system. For example, in our <strong>Student<\/strong> Model we get all the objects using <strong>Student.student.all()<\/strong> but if we want to modify the initial queryset then we need to override a <strong>Manager\u2019s<\/strong> base <strong>QuerySet<\/strong> by overriding the <strong>manager.get_queryset()<\/strong> method. <strong>get_queryset()<\/strong> should return a <strong>QuerySet<\/strong> with the properties we require.<\/p>\n\n\n\n<p>So here we have created two managers for our <strong>Student<\/strong> Model by name <strong>MaleManager<\/strong> and <strong>FemaleManager<\/strong> and instantiated them by name male and female, so our <strong>MaleManager<\/strong> and <strong>FemaleManager<\/strong> looks as and their access like.<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/3f4ebf3e36a7d9469a10dfce91fa3071.js\"><\/script><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>ProjectStatusSerializerCalling custom QuerySet method from the manager<\/strong><\/h2>\n\n\n\n<p>Most of the methods from the standard QuerySet are directly accessible from the manager but if we want to add methods that need to be accessible as attributes then we need to define Custom Queryset.<\/p>\n\n\n\n<p>We need to do this because the methods defined in the manager are not chainable.<\/p>\n\n\n\n<p>For example, in our <strong>StudentManager<\/strong> we have a method by name <strong>get_males()<\/strong> if we try to chain it with <strong>get_students_age_less_or_equal()<\/strong> then it will throw error like this &#8211;<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/16153a9bc5c74dde532142ece5899c37.js\"><\/script><\/p>\n\n\n\n<p>So, to make it work, we will define our own QuerySets Method and using that method in a seperate manager named as <strong>StudentModifyManager<\/strong><\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/4f67d1164352c1f7c861b83334c39df4.js\"><\/script><\/p>\n\n\n\n<p>Now as in our models we have instantiate our StudentModifyManager as modify named object, so we can use the chainable methods as:-<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/9022f184a0841c4a491875973d954fc2.js\"><\/script><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating a manager with QuerySet Methods.<\/h2>\n\n\n\n<p>While calling <strong>StudentQuerySet<\/strong> Methods, we need to <strong>duplicate<\/strong> its methods in our <strong>StudentModifyManager<\/strong>. If we don\u2019t want to duplicate those methods then we can create a manage with queryset methods.<\/p>\n\n\n\n<p>In our <strong>Student<\/strong> Model we have created a manager with object <strong>query<\/strong> as<br><strong>query = StudentQuerySet.as_manager()<\/strong><\/p>\n\n\n\n<p>Now, we can use that manager as <strong>Student.query.male().get_sem3_students()<\/strong> and can get output according to it.<\/p>\n\n\n\n<p>Thus, here the <strong>StudentQuerySet.as_manager()<\/strong> is virtually identical to the <strong>StudentModifyManager<\/strong>.<\/p>\n\n\n\n<p><strong>from_queryset<\/strong> method: classmethod from_queryset(queryset_class)<\/p>\n\n\n\n<p>If we want the custom <strong>Manager<\/strong> and the custom <strong>QuerySet<\/strong> for the advanced usage then it can be done by <strong>Manager.from_queryset()<\/strong> which returns the subclass of the base class with a copy of the custom Queryset methods.<\/p>\n\n\n\n<p>So in our Student model, we have done it by creating a <strong>custom<\/strong> object in the model as<\/p>\n\n\n\n<p>c<strong>ustom = StudentModifyManager.from_queryset(StudentQuerySet)()<\/strong> where the <strong>StudentModifyManager<\/strong> is our custom Manager and the <strong>StudentQuerySet<\/strong> is our custom <strong>QuerySet<\/strong><\/p>\n\n\n\n<p>Now looking at the output in our shell:-<\/p>\n\n\n\n<p><script src=\"https:\/\/gist.github.com\/MeetParikh01\/40222afd3b35d88094136c200664e0be.js\"><\/script><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>Django managers ensure that you write code which is easily maintained and adhere to the DRY principle. They allow keeping queries at a centralized location so that all the queries come from a single location instead of flying in from everywhere.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.botreetechnologies.com\/django-development\" target=\"_blank\" rel=\"noopener noreferrer\">Click here for more details\u2026<\/a><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>At&nbsp;<a href=\"https:\/\/www.botreetechnologies.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">BoTree Technologies<\/a>, we build enterprise applications with our Django team of 20+ engineers.<\/p>\n\n\n\n<p>We also specialize in RPA, AI, Python, Ruby on Rails, JavaScript and ReactJS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.botreetechnologies.com\/contact\" target=\"_blank\" rel=\"noopener noreferrer\">Consulting is free<\/a>&nbsp;\u2013 let us help you grow!<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>What is a manager? A manager is an interface through&#8230;<\/p>\n","protected":false},"author":59,"featured_media":13020,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68,10],"tags":[],"class_list":["post-10025","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-django","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Definitive Guide For Django Model Managers<\/title>\n<meta name=\"description\" content=\"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Definitive Guide For Django Model Managers\" \/>\n<meta property=\"og:description\" content=\"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\" \/>\n<meta property=\"og:site_name\" content=\"BoTree Technologies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BoTreeTechnologies\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-30T05:22:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-02T12:16:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Meet Parikh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:site\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Meet Parikh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\"},\"author\":{\"name\":\"Meet Parikh\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162\"},\"headline\":\"Definitive Guide For Django Model Managers\",\"datePublished\":\"2020-04-30T05:22:49+00:00\",\"dateModified\":\"2020-12-02T12:16:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\"},\"wordCount\":718,\"commentCount\":6,\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg\",\"articleSection\":[\"Django\",\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\",\"name\":\"Definitive Guide For Django Model Managers\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg\",\"datePublished\":\"2020-04-30T05:22:49+00:00\",\"dateModified\":\"2020-12-02T12:16:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162\"},\"description\":\"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"Django Model Managers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.botreetechnologies.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Definitive Guide For Django Model Managers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/\",\"name\":\"BoTree Technologies\",\"description\":\"Committed to inspire generation.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162\",\"name\":\"Meet Parikh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png\",\"caption\":\"Meet Parikh\"},\"description\":\"I am a passionate Python developer who is enthusiastic for working on web development using Django, machine learning and data science projects. I love to explore new technologies and apart from it i like to listen music, play computer and mobile games.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Definitive Guide For Django Model Managers","description":"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/","og_locale":"en_US","og_type":"article","og_title":"Definitive Guide For Django Model Managers","og_description":"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.","og_url":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/","og_site_name":"BoTree Technologies","article_publisher":"https:\/\/www.facebook.com\/BoTreeTechnologies\/","article_published_time":"2020-04-30T05:22:49+00:00","article_modified_time":"2020-12-02T12:16:17+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg","type":"image\/jpeg"}],"author":"Meet Parikh","twitter_card":"summary_large_image","twitter_creator":"@BoTreeTech","twitter_site":"@BoTreeTech","twitter_misc":{"Written by":"Meet Parikh","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#article","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/"},"author":{"name":"Meet Parikh","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162"},"headline":"Definitive Guide For Django Model Managers","datePublished":"2020-04-30T05:22:49+00:00","dateModified":"2020-12-02T12:16:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/"},"wordCount":718,"commentCount":6,"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg","articleSection":["Django","Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/","url":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/","name":"Definitive Guide For Django Model Managers","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage"},"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg","datePublished":"2020-04-30T05:22:49+00:00","dateModified":"2020-12-02T12:16:17+00:00","author":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162"},"description":"Want to know how Django model managers can help you maintain your code? Here\u2019s a definitive guide for Django managers and how to implement them the right way.","breadcrumb":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#primaryimage","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/04\/definitive-guide-for-django-managers.jpg","width":1920,"height":1280,"caption":"Django Model Managers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.botreetechnologies.com\/blog\/definitive-guide-for-django-model-managers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.botreetechnologies.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Definitive Guide For Django Model Managers"}]},{"@type":"WebSite","@id":"https:\/\/www.botreetechnologies.com\/blog\/#website","url":"https:\/\/www.botreetechnologies.com\/blog\/","name":"BoTree Technologies","description":"Committed to inspire generation.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/a60c2fb00a6cd677895178853ab5d162","name":"Meet Parikh","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/meet-parikh-150x150.png","caption":"Meet Parikh"},"description":"I am a passionate Python developer who is enthusiastic for working on web development using Django, machine learning and data science projects. I love to explore new technologies and apart from it i like to listen music, play computer and mobile games."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/10025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/users\/59"}],"replies":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/comments?post=10025"}],"version-history":[{"count":1,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/10025\/revisions"}],"predecessor-version":[{"id":13021,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/10025\/revisions\/13021"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media\/13020"}],"wp:attachment":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=10025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=10025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=10025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}