{"id":1308,"date":"2017-08-25T17:32:58","date_gmt":"2017-08-25T09:32:58","guid":{"rendered":"http:\/\/www.yueguangzu.net\/?p=1308"},"modified":"2017-09-09T12:42:56","modified_gmt":"2017-09-09T04:42:56","slug":"%e8%a1%a8%e5%85%b3%e8%81%94%e6%93%8d%e4%bd%9c%e8%87%aa%e5%ae%9a%e4%b9%89fieldsql","status":"publish","type":"post","link":"http:\/\/www.yueguangzu.net\/?p=1308","title":{"rendered":"[Django\u7cfb\u5217]8.\u8868\u5173\u8054\u64cd\u4f5c,\u81ea\u5b9a\u4e49field,sql"},"content":{"rendered":"<h4 class=\"md-end-block md-heading md-focus\"><span class=\"md-expand\">1.\u8868\u5173\u8054\u64cd\u4f5c<\/span><\/h4>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">1.1\u5728models.py\u4e0b\u6620\u5c04\u51fa3\u5f20\u8868\u5230\u6570\u636e\u5e93<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\"># -*- coding: utf-8 -*-<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">__future__<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">unicode_literals<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">models<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Publisher<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">name<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">30<\/span>)\r\n \u00a0  <span class=\"cm-variable\">address<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">50<\/span>)\r\n\u200b\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">name<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Author<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">name<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">30<\/span>)\r\n \u00a0  <span class=\"cm-variable\">age<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">IntegerField<\/span>()\r\n \u00a0  <span class=\"cm-variable\">email<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">EmailField<\/span>()\r\n\u200b\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">name<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Book<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">title<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">100<\/span>)\r\n \u00a0  <span class=\"cm-variable\">authors<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">ManyToManyField<\/span>(<span class=\"cm-variable\">Author<\/span>)\r\n \u00a0  <span class=\"cm-variable\">publisher<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">ForeignKey<\/span>(<span class=\"cm-variable\">Publisher<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">title<\/span><\/pre>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u4e09\u5f20\u8868\u6570\u636e<\/h5>\n<\/li>\n<\/ul>\n<pre class=\"md-fences md-end-block\" lang=\"mysql\" contenteditable=\"false\"><span class=\"cm-comment\">#book_book_authors<\/span>\r\nid  name age email\r\n<span class=\"cm-number\">1<\/span>   \u6d6e\u751f  <span class=\"cm-number\">29<\/span>  toc<span class=\"cm-variable-2\">@163.com<\/span>\r\n<span class=\"cm-number\">2<\/span>   \u6768\u5e06  <span class=\"cm-number\">25<\/span>  yangfan<span class=\"cm-variable-2\">@qq.com<\/span>\r\n<span class=\"cm-number\">3<\/span>   \u4fa0\u4ed4  <span class=\"cm-number\">25<\/span>  xiazai<span class=\"cm-variable-2\">@qq.com<\/span>\r\n<span class=\"cm-number\">4<\/span>   slice   <span class=\"cm-number\">26<\/span>  slice<span class=\"cm-variable-2\">@tanzhou.com<\/span>\r\n<span class=\"cm-number\">5<\/span>   ff  <span class=\"cm-number\">26<\/span>  testsat<span class=\"cm-variable-2\">@qq.com<\/span>\r\n<span class=\"cm-number\">6<\/span>   yf  <span class=\"cm-number\">23<\/span>  yf<span class=\"cm-variable-2\">@test.com<\/span><\/pre>\n<pre class=\"md-fences md-end-block\" lang=\"mysql\" contenteditable=\"false\"><span class=\"cm-comment\">#book_book<\/span>\r\nid  title  publihser_id\r\n<span class=\"cm-number\">1<\/span>   \u8bba\u4e00\u592b\u591a\u59bb   <span class=\"cm-number\">2<\/span>\r\n<span class=\"cm-number\">2<\/span>   \u4ece\u5220\u5e93\u5230\u8dd1\u8def  <span class=\"cm-number\">1<\/span>\r\n<span class=\"cm-number\">3<\/span>   FUCK    <span class=\"cm-number\">2<\/span>\r\n<span class=\"cm-number\">4<\/span>   more <span class=\"cm-keyword\">and<\/span> more   <span class=\"cm-number\">2<\/span>\r\n<span class=\"cm-number\">5<\/span>   django  <span class=\"cm-number\">4<\/span><\/pre>\n<pre class=\"md-fences md-end-block\" lang=\"mysql\" contenteditable=\"false\"><span class=\"cm-comment\">#book_publisher<\/span>\r\nid name address\r\n<span class=\"cm-number\">1<\/span>   \u4eba\u6c11\u6559\u80b2\u51fa\u7248\u793e \u5317\u4eac\u5e02\u89e3\u653e\u897f\u8def\r\n<span class=\"cm-number\">2<\/span>   \u4e0d\u53ef\u63cf\u8ff0\u51fa\u7248\u793e \u706b\u661f\u975e\u4e3b\u6d41\u5e02\r\n<span class=\"cm-number\">3<\/span>   ffd ffffffffd<\/pre>\n<h5 class=\"md-end-block md-heading\">1.2\u73b0\u5728\u9700\u8981\u5f80\u6570\u636e\u5e93\u6dfb\u52a0\u4e00\u6761book\u8bb0\u5f55,shell\u6a21\u5f0f\u4e0b\u64cd\u4f5c<\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span><span class=\"cm-variable\">python<\/span> <span class=\"cm-variable\">mange<\/span>.<span class=\"cm-property\">py<\/span> <span class=\"cm-variable\">shell<\/span>  <span class=\"cm-comment\">#\u8fdb\u5165python shell \u6a21\u5f0f<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span><span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">book<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">Author<\/span>,<span class=\"cm-variable\">Book<\/span>,<span class=\"cm-variable\">Publisher<\/span> <span class=\"cm-comment\">#\u5bfc\u5165Author,Book,Publisher\u6a21\u5757<\/span>\r\n\u200b\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>=<span class=\"cm-variable\">Author<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'laocao'<\/span>,<span class=\"cm-variable\">age<\/span>=<span class=\"cm-number\">19<\/span>)  <span class=\"cm-comment\">#\u589e\u52a0\u4e00\u6761\u4f5c\u8005laocao\u7684\u8bb0\u5f55<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>.<span class=\"cm-property\">save<\/span>()                        <span class=\"cm-comment\">#\u4f5c\u8005\u5165\u5e93<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>=<span class=\"cm-variable\">Book<\/span>(<span class=\"cm-variable\">title<\/span>=<span class=\"cm-string\">'mysql run'<\/span>,<span class=\"cm-variable\">publisher_id<\/span>=<span class=\"cm-number\">1<\/span>) \u00a0 <span class=\"cm-comment\">#\u589e\u52a0\u4e00\u6761\u4e66\u7c4d\u8bb0\u5f55<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">save<\/span>()                                    <span class=\"cm-comment\">#\u5165\u5e93<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">authors<\/span>.<span class=\"cm-property\">add<\/span>(<span class=\"cm-variable\">a<\/span>)                         \u00a0 <span class=\"cm-comment\">#\u5c06\u521a\u624d\u65b0\u589e\u7684\u4f5c\u8005laocao\u5173\u8054\u8fdb\u6765<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">save<\/span>()<\/pre>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h4 class=\"md-end-block md-heading\"><span class=\"\">\u9700\u8981\u6ce8\u610f\u7684\u662f,\u4f7f\u7528\u6b64\u65b9\u6cd5\u8fdb\u884c\u63d2\u5165\u6570\u636e,\u9700\u8981\u7528<\/span><span spellcheck=\"false\"><code>a.save()<\/code><\/span><span class=\"\"> \u4e8b\u5148\u5bf9\u5916\u952e\u7684\u8bb0\u5f55\u8fdb\u884c\u5165\u5e93.<\/span><\/h4>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u4e66\u7c4d\u589e\u52a0\u7684\u65f6\u5019,\u4e5f\u9700\u8981<\/span><span class=\"\" spellcheck=\"false\"><code>b.save()<\/code><\/span><span class=\"\">\u5148\u5165\u5e93,\u624d\u80fd\u64cd\u4f5c\u591a\u5bf9\u591a\u5173\u8054<\/span><span spellcheck=\"false\"><code>b.authors.add(a)<\/code><\/span><span class=\"\"> \u64cd\u4f5c,\u5426\u5219\u4f1a\u62a5\u9519.<\/span><\/h5>\n<\/li>\n<\/ul>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named101.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named101.png\" \/><\/span><\/span><\/p>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">1.3\u591a\u5bf9\u591a\u67e5\u8be2<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'laocao'<\/span>)[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">book_set<\/span>.<span class=\"cm-property\">all<\/span>()\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">QuerySet<\/span> [<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Book<\/span>: <span class=\"cm-variable\">mysql<\/span> <span class=\"cm-variable\">run<\/span><span class=\"cm-operator\">&gt;<\/span>]<span class=\"cm-operator\">&gt;<\/span> \u00a0 <span class=\"cm-comment\">#Queryset\u5bf9\u8c61,\u8bbf\u95ee\u9700\u8981[0]<\/span>\r\n<span class=\"cm-operator\">----------------------------------------------------------------------<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'laocao'<\/span>)[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">book_set<\/span>.<span class=\"cm-property\">all<\/span>()[<span class=\"cm-number\">0<\/span>]\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Book<\/span>: <span class=\"cm-variable\">mysql<\/span> <span class=\"cm-variable\">run<\/span><span class=\"cm-operator\">&gt;<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'laocao'<\/span>)[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">book_set<\/span>.<span class=\"cm-property\">all<\/span>().<span class=\"cm-property\">first<\/span>()\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Book<\/span>: <span class=\"cm-variable\">mysql<\/span> <span class=\"cm-variable\">run<\/span><span class=\"cm-operator\">&gt;<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">filter<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'laocao'<\/span>)[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">book_set<\/span>.<span class=\"cm-property\">all<\/span>().<span class=\"cm-property\">last<\/span>()\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Book<\/span>: <span class=\"cm-variable\">mysql<\/span> <span class=\"cm-variable\">run<\/span><span class=\"cm-operator\">&gt;<\/span><\/pre>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">1.4\u5916\u952e\u7684\u7ea7\u8054\u5220\u9664<\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u9996\u5148\u9700\u8981\u4fee\u6539models.py\u6587\u4ef6,\u5c06\u4e0a\u9762\u7684authors\u5b57\u6bb5\u4ece\u591a\u5bf9\u591a<span spellcheck=\"false\"><code>models.ManyToManyField(Author)<\/code><\/span>\u4fee\u6539\u4e3a\u4e00\u5bf9\u4e00<span spellcheck=\"false\"><code>authors = models.OneToOneField(Author,null=True,on_delete=models.CASCADE)<\/code><\/span><\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span spellcheck=\"false\"><code>on_delete=models.CASCADE<\/code><\/span>\u8be5\u5b57\u6bb5\u53c2\u6570\u8868\u540d\u4f7f\u7528\u7ea7\u8054\u5220\u9664<\/h5>\n<\/li>\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">Do not Foget to <\/span><span spellcheck=\"false\"><code>python manage.py makemigrations<\/code><\/span> &amp; <span class=\"\" spellcheck=\"false\"><code>python manage.py migrate<\/code><\/span><\/h5>\n<\/li>\n<\/ul>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#models.py<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Book<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">title<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">100<\/span>)\r\n \u00a0  <span class=\"cm-variable\">authors<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">OneToOneField<\/span>(<span class=\"cm-variable\">Author<\/span>,<span class=\"cm-variable\">null<\/span>=<span class=\"cm-builtin\">True<\/span>,<span class=\"cm-variable\">on_delete<\/span>=<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CASCADE<\/span>)\r\n \u00a0  <span class=\"cm-variable\">publisher<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">ForeignKey<\/span>(<span class=\"cm-variable\">Publisher<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">title<\/span><\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u9996\u5148\u589e\u52a0\u4e00\u4e2a\u4f5c\u8005Fusheng (shell\u6a21\u5f0f\u4e0b\u64cd\u4f5c)<\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>=<span class=\"cm-variable\">Author<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'Fusheng'<\/span>,<span class=\"cm-variable\">age<\/span>=<span class=\"cm-number\">29<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>.<span class=\"cm-property\">save<\/span>()<\/pre>\n<p class=\"\"><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named102.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named102.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u53ef\u4ee5\u770b\u5230\u65b0\u589e\u7684\u4f5c\u8005Fusheng\u7684id=9,\u65b0\u589e\u4e00\u672c\u4e66Goudan<\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>=<span class=\"cm-variable\">Book<\/span>(<span class=\"cm-variable\">title<\/span>=<span class=\"cm-string\">'Goudan'<\/span>,<span class=\"cm-variable\">publisher_id<\/span>=<span class=\"cm-number\">1<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">save<\/span>()\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">authors_id<\/span>=<span class=\"cm-number\">9<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>.<span class=\"cm-property\">save<\/span>()<\/pre>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named103.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named103.png\" \/><\/span><\/span><\/p>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u73b0\u5728\u5220\u9664\u4f5c\u8005Fusheng\u7684\u8bb0\u5f55<\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">get<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'Fusheng'<\/span>).<span class=\"cm-property\">delete<\/span>()\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span>(<span class=\"cm-number\">2<\/span>, {<span class=\"cm-string\">u'book.Book'<\/span>: <span class=\"cm-number\">1<\/span>, <span class=\"cm-string\">u'book.Author'<\/span>: <span class=\"cm-number\">1<\/span>}) <span class=\"cm-comment\">#\u64cd\u4f5c\u8bb0\u5f55\u65702\u6761<\/span><\/pre>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u53ef\u4ee5\u770b\u5230,\u56e0\u4e3aauthors\u5b57\u6bb5\u5b58\u5728\u7ea7\u8054\u5220\u9664,\u6240\u4ee5\u5f53\u4f5c\u8005Fusheng\u88ab\u5220\u9664\u4e86,\u4e66\u7c4dGoudan\u4e5f\u88ab\u7ea7\u8054\u5220\u9664<\/h5>\n<\/li>\n<\/ul>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named104.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named104.png\" \/><\/span><\/span><\/p>\n<h4 class=\"md-end-block md-heading\"><span class=\"\">2.\u81ea\u5b9a\u4e49field<\/span><\/h4>\n<h5 class=\"md-end-block md-heading\">Django\u5e38\u7528\u7684Field\u5df2\u7ecf\u8db3\u591f\u65e5\u5e38\u4f7f\u7528,\u5982\u679c\u5185\u7f6eField\u65e0\u6cd5\u6ee1\u8db3\u9700\u6c42,\u53ef\u4ee5\u81ea\u5b9a\u4e49Filed<\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\">\u5b9e\u8d28\u662f\u901a\u8fc7\u5bf9\u5185\u7f6e\u7684Filed\u7c7b\u8fdb\u884c\u7ee7\u627f\u548c\u6d3e\u751f<\/h5>\n<\/blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">2.1\u81ea\u5b9a\u4e49\u4e00\u4e2a\u7c7bListField,\u8be5\u7c7b\u662f\u4eceTextField\u6d3e\u751f,\u5b9a\u4e49\u4e863\u4e2a\u65b9\u6cd5,\u5b9e\u73b0\u7684\u4f5c\u7528\u662f<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-variable\">to_python<\/span> <span class=\"cm-error\">\u51fd\u6570\u7528\u4e8e\u8f6c\u5316\u6570\u636e\u5e93\u4e2d\u7684\u5b57\u7b26\u5230<\/span> <span class=\"cm-variable\">Python<\/span><span class=\"cm-error\">\u7684\u53d8\u91cf<\/span>\r\n<span class=\"cm-variable\">get_prep_value<\/span> <span class=\"cm-error\">\u7528\u4e8e\u5c06<\/span><span class=\"cm-variable\">Python<\/span><span class=\"cm-error\">\u53d8\u91cf\u5904\u7406\u540e\u4fdd\u5b58\u5230\u6570\u636e\u5e93\uff0c<\/span>\r\n<span class=\"cm-variable\">value_to_string<\/span> <span class=\"cm-error\">\u7528\u4e8e<\/span><span class=\"cm-keyword\">print<\/span><\/pre>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\">#book\/ListField.py<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">models<\/span>\r\n<span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">ast<\/span>\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">ListField<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">TextField<\/span>):\r\n<span class=\"cm-comment\"># \u00a0 __metaclass__ = models.SubfieldBase<\/span>\r\n \u00a0  <span class=\"cm-variable\">description<\/span> = <span class=\"cm-string\">\"Stores a python list\"<\/span>\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__init__<\/span>(<span class=\"cm-variable-2\">self<\/span>, <span class=\"cm-operator\">*<\/span><span class=\"cm-variable\">args<\/span>, <span class=\"cm-operator\">**<\/span><span class=\"cm-variable\">kwargs<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-builtin\">super<\/span>(<span class=\"cm-variable\">ListField<\/span>, <span class=\"cm-variable-2\">self<\/span>).<span class=\"cm-property\">__init__<\/span>(<span class=\"cm-operator\">*<\/span><span class=\"cm-variable\">args<\/span>, <span class=\"cm-operator\">**<\/span><span class=\"cm-variable\">kwargs<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">to_python<\/span>(<span class=\"cm-variable-2\">self<\/span>, <span class=\"cm-variable\">value<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">if<\/span> <span class=\"cm-keyword\">not<\/span> <span class=\"cm-variable\">value<\/span>:\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">value<\/span> = []\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">if<\/span> <span class=\"cm-builtin\">isinstance<\/span>(<span class=\"cm-variable\">value<\/span>, <span class=\"cm-builtin\">list<\/span>):\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">value<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">ast<\/span>.<span class=\"cm-property\">literal_eval<\/span>(<span class=\"cm-variable\">value<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">get_prep_value<\/span>(<span class=\"cm-variable-2\">self<\/span>, <span class=\"cm-variable\">value<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">if<\/span> <span class=\"cm-variable\">value<\/span> <span class=\"cm-keyword\">is<\/span> <span class=\"cm-builtin\">None<\/span>:\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">value<\/span>\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-builtin\">unicode<\/span>(<span class=\"cm-variable\">value<\/span>) <span class=\"cm-comment\"># use str(value) in Python 3<\/span>\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">value_to_string<\/span>(<span class=\"cm-variable-2\">self<\/span>, <span class=\"cm-variable\">obj<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-variable\">value<\/span> = <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">_get_val_from_obj<\/span>(<span class=\"cm-variable\">obj<\/span>)\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">get_db_prep_value<\/span>(<span class=\"cm-variable\">value<\/span>)<\/pre>\n<h5 class=\"md-end-block md-heading\">2.2\u6539\u52a8models.py,\u9996\u5148\u9700\u8981\u5bfc\u5165<span class=\"\" spellcheck=\"false\"><code>from book.ListField import ListField<\/code><\/span><span class=\"\">\u5728Author\u7c7b\u4e0b\u589e\u52a0\u5b57\u6bb5area,\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u7c7b<\/span><span spellcheck=\"false\"><code>ListField<\/code><\/span><\/h5>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\">\u522b\u5fd8\u4e86 <span spellcheck=\"false\"><code>python manage.py makemigrations<\/code><\/span> &amp; <span class=\"\" spellcheck=\"false\"><code>python manage.py migrate<\/code><\/span><\/h5>\n<\/li>\n<\/ul>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-comment\"># -*- coding: utf-8 -*-<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">__future__<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">unicode_literals<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">models<\/span>\r\n<span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">book<\/span>.<span class=\"cm-property\">ListField<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">ListField<\/span>\r\n\u200b\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Publisher<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">name<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">30<\/span>)\r\n \u00a0  <span class=\"cm-variable\">address<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">50<\/span>)\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">name<\/span>\r\n\u200b\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Author<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">name<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">30<\/span>)\r\n \u00a0  <span class=\"cm-variable\">age<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">IntegerField<\/span>()\r\n \u00a0  <span class=\"cm-variable\">email<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">EmailField<\/span>()\r\n \u00a0  <span class=\"cm-variable\">area<\/span> = <span class=\"cm-variable\">ListField<\/span>(<span class=\"cm-variable\">null<\/span>=<span class=\"cm-builtin\">True<\/span>) \u00a0  <span class=\"cm-comment\">#\u589e\u52a0area\u5b57\u6bb5,\u5f15\u7528\u81ea\u5b9a\u4e49Field<\/span>\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">name<\/span>\r\n\u200b\r\n<span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Book<\/span>(<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">Model<\/span>):\r\n \u00a0  <span class=\"cm-variable\">title<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CharField<\/span>(<span class=\"cm-variable\">max_length<\/span>=<span class=\"cm-number\">100<\/span>)\r\n \u00a0  <span class=\"cm-variable\">authors<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">OneToOneField<\/span>(<span class=\"cm-variable\">Author<\/span>,<span class=\"cm-variable\">null<\/span>=<span class=\"cm-builtin\">True<\/span>,<span class=\"cm-variable\">on_delete<\/span>=<span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">CASCADE<\/span>)\r\n \u00a0  <span class=\"cm-variable\">publisher<\/span> = <span class=\"cm-variable\">models<\/span>.<span class=\"cm-property\">ForeignKey<\/span>(<span class=\"cm-variable\">Publisher<\/span>)\r\n\u200b\r\n \u00a0  <span class=\"cm-keyword\">def<\/span> <span class=\"cm-def\">__unicode__<\/span>(<span class=\"cm-variable-2\">self<\/span>):\r\n \u00a0 \u00a0 \u00a0  <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable-2\">self<\/span>.<span class=\"cm-property\">title<\/span><\/pre>\n<h5 class=\"md-end-block md-heading\">2.3 \u5728shell\u6a21\u5f0f\u4e0b\u589e\u52a0\u4e00\u4e2a\u4f5c\u8005xiazai\u7684\u8bb0\u5f55,\u4f7f\u7528\u81ea\u5b9a\u4e49Field<\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-variable\">F<\/span>:<span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">Project<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">git<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">web<\/span><span class=\"cm-error\">\\<\/span><span class=\"cm-variable\">day10<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">python<\/span> <span class=\"cm-variable\">manage<\/span>.<span class=\"cm-property\">py<\/span> <span class=\"cm-variable\">shell<\/span>\r\n<span class=\"cm-variable\">Python<\/span> <span class=\"cm-number\">2.7.13<\/span> (<span class=\"cm-variable\">v2<\/span><span class=\"cm-number\">.7.13<\/span>:<span class=\"cm-variable\">a06454b1afa1<\/span>, <span class=\"cm-variable\">Dec<\/span> <span class=\"cm-number\">17<\/span> <span class=\"cm-number\">2016<\/span>, <span class=\"cm-number\">20<\/span>:<span class=\"cm-number\">42<\/span>:<span class=\"cm-number\">59<\/span>) [<span class=\"cm-variable\">MSC<\/span> <span class=\"cm-variable\">v<\/span><span class=\"cm-number\">.1500<\/span> <span class=\"cm-number\">32<\/span> <span class=\"cm-variable\">bit<\/span> (<span class=\"cm-variable\">Intel<\/span>)] <span class=\"cm-variable\">on<\/span> <span class=\"cm-variable\">win32<\/span>\r\n<span class=\"cm-variable\">Type<\/span> <span class=\"cm-string\">\"help\"<\/span>, <span class=\"cm-string\">\"copyright\"<\/span>, <span class=\"cm-string\">\"credits\"<\/span> <span class=\"cm-keyword\">or<\/span> <span class=\"cm-string\">\"license\"<\/span> <span class=\"cm-keyword\">for<\/span> <span class=\"cm-variable\">more<\/span> <span class=\"cm-variable\">information<\/span>.\r\n(<span class=\"cm-variable\">InteractiveConsole<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">book<\/span>.<span class=\"cm-property\">models<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">Author<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>=<span class=\"cm-variable\">Author<\/span>(<span class=\"cm-variable\">name<\/span>=<span class=\"cm-string\">'xiazai'<\/span>,<span class=\"cm-variable\">age<\/span>=<span class=\"cm-number\">25<\/span>,<span class=\"cm-variable\">email<\/span>=<span class=\"cm-string\">'xiazai@toc.com'<\/span>)\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>.<span class=\"cm-property\">area<\/span>=[<span class=\"cm-string\">'beijing'<\/span>,<span class=\"cm-string\">'xian'<\/span>,<span class=\"cm-string\">'guangxi'<\/span>]  <span class=\"cm-comment\">#\u8be5\u5b57\u6bb5\u5b9a\u4e49\u6240\u5728\u7684\u533a\u57df,\u662f\u4e00\u4e2a\u5217\u8868<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">a<\/span>.<span class=\"cm-property\">save<\/span>()<\/pre>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"\">\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u6570\u636e\u5165\u5e93\u6210\u529f,\u81ea\u52a8\u589e\u52a0\u4e86area\u5b57\u6bb5<\/span><\/h5>\n<\/li>\n<\/ul>\n<p><span class=\"md-line md-end-block\"><span class=\"md-image md-img-loaded\" contenteditable=\"false\" data-src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named105.png\"><img style=\"box-sizing: border-box; border-width: 0px 4px 0px 2px; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default; border-color: initial transparent initial transparent; border-style: initial solid initial solid;\" src=\"http:\/\/www.yueguangzu.net\/wp-content\/uploads\/2017\/08\/named105.png\" \/><\/span><\/span><\/p>\n<h4 class=\"md-end-block md-heading\"><span class=\"\">3.\u81ea\u5b9a\u4e49sql<\/span><\/h4>\n<h5 class=\"md-end-block md-heading\">3.1 <span class=\"\"><a spellcheck=\"false\" href=\"https:\/\/docs.djangoproject.com\/en\/1.2\/topics\/db\/sql\/#django.db.models.Manager.raw\">Manager.raw() <\/a><\/span><span class=\"\">:\u6267\u884c\u539f\u59cb\u67e5\u8be2\u5e76\u8fd4\u56de\u6a21\u578b\u5b9e\u4f8b,\u683c\u5f0f\u662f<\/span><span spellcheck=\"false\"><code>Author.objects.raw(sql)<\/code><\/span><span class=\"\">,\u8fd4\u56de\u7684\u662f\u4e00\u4e2aRawQuerySet\u5bf9\u8c61.<\/span><\/h5>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">shell\u6a21\u5f0f\u4e0b<\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">raw<\/span>(<span class=\"cm-string\">'select * from book_author'<\/span>)\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">RawQuerySet<\/span>: <span class=\"cm-variable\">select<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">book_author<\/span><span class=\"cm-operator\">&gt;<\/span> \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-comment\">#\u8fd4\u56de\u7684\u662fRawQuerySet\u5bf9\u8c61<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>=<span class=\"cm-variable\">Author<\/span>.<span class=\"cm-property\">objects<\/span>.<span class=\"cm-property\">raw<\/span>(<span class=\"cm-string\">'select * from book_author'<\/span>) \u00a0 \r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">b<\/span>[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">name<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">#\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528[0]\u9009\u4e2d\u8bb0\u5f55<\/span>\r\n<span class=\"cm-string\">u'\\u6d6e\\u751f'<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">print<\/span> <span class=\"cm-variable\">b<\/span>[<span class=\"cm-number\">0<\/span>].<span class=\"cm-property\">name<\/span> \r\n<span class=\"cm-error\">\u6d6e\u751f<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">for<\/span> <span class=\"cm-variable\">i<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">b<\/span>: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <span class=\"cm-comment\">#\u53ef\u4ee5\u88ab\u8fed\u4ee3\u8f93\u51fa<\/span>\r\n... \u00a0 \u00a0 <span class=\"cm-property\">print<\/span> <span class=\"cm-variable\">i<\/span>.<span class=\"cm-property\">name<\/span>\r\n<span class=\"cm-error\">\u6d6e\u751f<\/span>\r\n<span class=\"cm-error\">\u6768\u5e06<\/span>\r\n<span class=\"cm-error\">\u4fa0\u4ed4<\/span>\r\n<span class=\"cm-builtin\">slice<\/span>\r\n<span class=\"cm-variable\">ff<\/span>\r\n<span class=\"cm-variable\">yf<\/span>\r\n<span class=\"cm-variable\">laocao<\/span>\r\n<span class=\"cm-variable\">xiazai<\/span><\/pre>\n<h5 class=\"md-end-block md-heading\">3.2 <span class=\"\" spellcheck=\"false\"><code>Executing custom SQL directly<\/code><\/span><span class=\"\">\u76f4\u63a5\u6267\u884c\u81ea\u5b9a\u4e49SQL\uff0c\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5b8c\u5168\u907f\u514d\u6570\u636e\u6a21\u578b\uff0c\u76f4\u63a5\u6267\u884c\u539f\u59cb\u7684SQL\u8bed\u53e5<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span>.<span class=\"cm-property\">connection<\/span><span class=\"cm-error\">\uff1a\u4ee3\u8868\u9ed8\u8ba4\u7684\u6570\u636e\u5e93\u8fde\u63a5<\/span> \r\n<span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span>.<span class=\"cm-property\">transaction<\/span> <span class=\"cm-error\">\uff1a\u4ee3\u8868\u9ed8\u8ba4\u6570\u636e\u5e93\u4e8b\u52a1\uff08<\/span><span class=\"cm-variable\">transaction<\/span><span class=\"cm-error\">\uff09<\/span> \r\n<span class=\"cm-error\">\u7528<\/span><span class=\"cm-variable\">database<\/span> <span class=\"cm-variable\">connection<\/span><span class=\"cm-error\">\u8c03\u7528<\/span> <span class=\"cm-variable\">connection<\/span>.<span class=\"cm-property\">cursor<\/span>() <span class=\"cm-error\">\u5f97\u5230\u4e00\u4e2a\u6e38\u6807<\/span>(<span class=\"cm-variable\">cursor<\/span>)<span class=\"cm-error\">\u5bf9\u8c61\u3002<\/span> \r\n<span class=\"cm-error\">\u7136\u540e\u8c03\u7528<\/span> <span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">execute<\/span>(<span class=\"cm-variable\">sql<\/span>, [<span class=\"cm-variable\">params<\/span>]) <span class=\"cm-error\">\u6267\u884c<\/span><span class=\"cm-variable\">SQL<\/span> \r\n<span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">fetchone<\/span>() <span class=\"cm-error\">\u6216\u8005<\/span> <span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">fetchall<\/span>()<span class=\"cm-error\">\uff1a<\/span> <span class=\"cm-error\">\u8fd4\u56de\u7ed3\u679c\u884c<\/span>\r\n<span class=\"cm-error\">\u5982\u679c\u6267\u884c\u4fee\u6539\u64cd\u4f5c\uff0c\u5219\u8c03\u7528<\/span> <span class=\"cm-variable\">transaction<\/span>.<span class=\"cm-property\">commit_unless_managed<\/span>()<span class=\"cm-error\">\u6765\u4fdd\u8bc1\u4f60\u7684\u66f4\u6539\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002<\/span><\/pre>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u8be5\u65b9\u5f0f\u76f4\u63a5\u8fde\u63a5\u6570\u636e\u5e93\u6267\u884csql\u64cd\u4f5c,\u4e0d\u7ecf\u8fc7\u6570\u636e\u6a21\u578b.<\/span><\/h5>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-keyword\">from<\/span> <span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span> <span class=\"cm-keyword\">import<\/span> <span class=\"cm-variable\">connection<\/span>,<span class=\"cm-variable\">transaction<\/span> <span class=\"cm-comment\">#\u5bfc\u5165\u8fde\u63a5\u6a21\u5757,\u4f20\u8f93\u6a21\u5757<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">cursor<\/span>=<span class=\"cm-variable\">connection<\/span>.<span class=\"cm-property\">cursor<\/span>() \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">#\u83b7\u53d6\u6e38\u6807<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">execute<\/span>(<span class=\"cm-string\">'select * from book_author'<\/span>)  <span class=\"cm-comment\">#\u6267\u884csql\u8bed\u53e5<\/span>\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span>.<span class=\"cm-property\">backends<\/span>.<span class=\"cm-property\">sqlite3<\/span>.<span class=\"cm-property\">base<\/span>.<span class=\"cm-property\">SQLiteCursorWrapper<\/span> <span class=\"cm-builtin\">object<\/span> <span class=\"cm-variable\">at<\/span> <span class=\"cm-number\">0x024EBA28<\/span><span class=\"cm-operator\">&gt;<\/span>  <span class=\"cm-comment\">#\u8fd4\u56de\u4e00\u4e2aSQLiteCursorWrapper\u5bf9\u8c61<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">row<\/span>=<span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">fetchall<\/span>()                       <span class=\"cm-comment\">#\u7528fectchall()\u83b7\u53d6\u7ed3\u679c\u96c6\u5408<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">row<\/span>                                         <span class=\"cm-comment\">#\u663e\u793a\u7ed3\u679c\u96c6<\/span>\r\n[(<span class=\"cm-number\">1<\/span>, <span class=\"cm-string\">u'\\u6d6e\\u751f'<\/span>, <span class=\"cm-number\">29<\/span>, <span class=\"cm-string\">u'toc@163.com'<\/span>, <span class=\"cm-builtin\">None<\/span>), (<span class=\"cm-number\">2<\/span>, <span class=\"cm-string\">u'\\u6768\\u5e06'<\/span>, <span class=\"cm-number\">25<\/span>, <span class=\"cm-string\">u'yangfan@qq.com'<\/span>, <span class=\"cm-builtin\">None<\/span>), (<span class=\"cm-number\">3<\/span>, <span class=\"cm-string\">u'\\u4fa0\\u4ed4'<\/span>, <span class=\"cm-number\">25<\/span>, <span class=\"cm-string\">u'xiazai@qq.com'<\/span>, <span class=\"cm-builtin\">None<\/span>), (<span class=\"cm-number\">4<\/span>, <span class=\"cm-string\">u'slice'<\/span>, <span class=\"cm-number\">26<\/span>, <span class=\"cm-string\">u'slic<\/span>\r\n<span class=\"cm-variable\">e<\/span><span class=\"cm-meta\">@tanzhou<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-string\">', None), (5, u'<\/span><span class=\"cm-variable\">ff<\/span><span class=\"cm-string\">', 26, u'<\/span><span class=\"cm-variable\">testsat<\/span><span class=\"cm-meta\">@qq<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-string\">', None), (6, u'<\/span><span class=\"cm-variable\">yf<\/span><span class=\"cm-string\">', 23, u'<\/span><span class=\"cm-variable\">yf<\/span><span class=\"cm-meta\">@test<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-string\">', None), (8, u'<\/span><span class=\"cm-variable\">laocao<\/span><span class=\"cm-string\">', 19, u'', None), (9, u'<\/span><span class=\"cm-variable\">xiazai<\/span><span class=\"cm-string\">', 25, u'<\/span><span class=\"cm-variable\">xiazai<\/span><span class=\"cm-meta\">@toc<\/span>.<span class=\"cm-property\">com<\/span><span class=\"cm-string\">', u\"[<\/span>\r\n<span class=\"cm-string\">'beijing'<\/span>, <span class=\"cm-string\">'xian'<\/span>, <span class=\"cm-string\">'guangxi'<\/span><span class=\"cm-error\">]<\/span><span class=\"cm-string\">\")]<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">row<\/span>[<span class=\"cm-number\">0<\/span>] \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">#\u663e\u793a\u7b2c\u4e00\u6761\u8bb0\u5f55<\/span>\r\n(<span class=\"cm-number\">1<\/span>, <span class=\"cm-string\">u'\\u6d6e\\u751f'<\/span>, <span class=\"cm-number\">29<\/span>, <span class=\"cm-string\">u'toc@163.com'<\/span>, <span class=\"cm-builtin\">None<\/span>)<\/pre>\n<blockquote>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f20\u6761\u4ef6\u53c2\u6570<\/span><\/h5>\n<\/blockquote>\n<pre class=\"md-fences md-end-block\" lang=\"python\" contenteditable=\"false\"><span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">execute<\/span>(<span class=\"cm-string\">'select * from book_author where name=%s'<\/span>,[<span class=\"cm-string\">'yf'<\/span>])\r\n<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">django<\/span>.<span class=\"cm-property\">db<\/span>.<span class=\"cm-property\">backends<\/span>.<span class=\"cm-property\">sqlite3<\/span>.<span class=\"cm-property\">base<\/span>.<span class=\"cm-property\">SQLiteCursorWrapper<\/span> <span class=\"cm-builtin\">object<\/span> <span class=\"cm-variable\">at<\/span> <span class=\"cm-number\">0x024EBA28<\/span><span class=\"cm-operator\">&gt;<\/span>\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">row<\/span>=<span class=\"cm-variable\">cursor<\/span>.<span class=\"cm-property\">fetchone<\/span>()\r\n<span class=\"cm-operator\">&gt;&gt;&gt;<\/span> <span class=\"cm-variable\">row<\/span>\r\n(<span class=\"cm-number\">6<\/span>, <span class=\"cm-string\">u'yf'<\/span>, <span class=\"cm-number\">23<\/span>, <span class=\"cm-string\">u'yf@test.com'<\/span>, <span class=\"cm-builtin\">None<\/span>)<\/pre>\n<h2 class=\"md-end-block md-heading\">\u603b\u7ed3<\/h2>\n<h5 class=\"md-end-block md-heading\"><span class=\"\">\u672c\u6b21\u5185\u5bb9\u6d89\u53ca\u6570\u636e\u5e93\u6838\u5fc3\u64cd\u4f5c,\u8bf7\u52a1\u5fc5\u5b66\u4f1a!<\/span><\/h5>\n","protected":false},"excerpt":{"rendered":"<p>1.\u8868\u5173\u8054\u64cd\u4f5c 1.1\u5728models.py\u4e0b\u6620\u5c04\u51fa3\u5f20\u8868\u5230\u6570\u636e\u5e93 # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import m [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[54],"tags":[65,64,66],"_links":{"self":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1308"}],"collection":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1308"}],"version-history":[{"count":3,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1308\/revisions"}],"predecessor-version":[{"id":1429,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=\/wp\/v2\/posts\/1308\/revisions\/1429"}],"wp:attachment":[{"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1308"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.yueguangzu.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}