{"id":313,"date":"2021-11-09T19:41:16","date_gmt":"2021-11-09T11:41:16","guid":{"rendered":"http:\/\/47.98.165.52\/?p=313"},"modified":"2021-11-09T19:41:16","modified_gmt":"2021-11-09T11:41:16","slug":"django-4-model%e6%a8%a1%e5%9e%8b%e5%9f%ba%e7%a1%80","status":"publish","type":"post","link":"\/?p=313","title":{"rendered":"Django-4.Model\u6a21\u578b\u57fa\u7840"},"content":{"rendered":"<h1>\u4e00\u3001\u6570\u636e\u5e93\u914d\u7f6e<\/h1>\n<h2>1.ORM\u6982\u5ff5<\/h2>\n<p><strong>\u5b9a\u4e49<\/strong>\uff1a\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff08Object Relational Mapping,\u7b80\u79f0ORM\uff09<br \/>\n<strong>\u4f18\u52bf<\/strong>\uff1a\u4e0d\u7528\u76f4\u63a5\u7f16\u5199SQL\u4ee3\u7801\uff0c\u53ea\u9700\u50cf\u64cd\u4f5c\u5bf9\u8c61\u4e00\u6837\u4ece\u6570\u636e\u5e93\u64cd\u4f5c\u6570\u636e\u3002<br \/>\n<img src=\"https:\/\/img-blog.csdnimg.cn\/99b6b81cf53b46da87eb4839c8664e87.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>2.\u6a21\u578b\u6620\u5c04\u5173\u7cfb<\/h2>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/2c0dc42e5e6348558f64ef10414765ab.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<ul>\n<li>\u6a21\u578b\u7c7b\u5fc5\u987b\u90fd\u5199\u5728app\u4e0b\u7684models.py\u6587\u4ef6\u4e2d<\/li>\n<li>\u6a21\u578b\u5982\u679c\u9700\u8981\u6620\u5c04\u5230\u6570\u636e\u5e93,\u6240\u5728\u7684app\u5fc5\u987b\u88ab\u5b89\u88c5.<\/li>\n<li>\u4e00\u4e2a\u6570\u636e\u8868\u5bf9\u5e94\u4e00\u4e2a\u6a21\u578b\u7c7b,\u8868\u4e2d\u7684\u5b57\u6bb5,\u5bf9\u5e94\u6a21\u578b\u4e2d\u7684\u7c7b\u5c5e\u6027.<\/li>\n<\/ul>\n<h2>3.\u6570\u636e\u5e93\u7684\u914d\u7f6e<\/h2>\n<ul>\n<li>1.\u5728settings.py\u4e2d\u914d\u7f6eDATABASES\n<pre><code class=\"language-python\">DATABASES = {\n    &#039;default&#039;: {\n        &#039;ENGINE&#039;: &#039;django.db.backends.mysql&#039;,  # \u6570\u636e\u5e93\u5f15\u64ce\n        &#039;NAME&#039;: &#039;mydb&#039;,                        #\u6570\u636e\u5e93\u540d\u79f0\n        &#039;USER&#039;: &#039;admin&#039;,                       # \u94fe\u63a5\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\n        &#039;PASSWORD&#039;:&#039;qwe123&#039;,                   # \u94fe\u63a5\u6570\u636e\u5e93\u7684\u5bc6\u7801\n        &#039;HOST&#039;: &#039;127.0.0.1&#039;,                   # mysql\u670d\u52a1\u5668\u7684\u57df\u540d\u548cip\u5730\u5740\n        &#039;PORT&#039;: &#039;3306&#039;,                        # mysql\u7684\u4e00\u4e2a\u7aef\u53e3\u53f7,\u9ed8\u8ba4\u662f3306\n    }\n}<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/1eaf24d649d74119a8725a0e003b36d7.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<ul>\n<li>2.__init__.py\n<pre><code class=\"language-python\">\u8bbe\u7f6e\u8fde\u63a5\u5668\u4e3apymysql:\n\u5728\u4e3b\u76ee\u5f55\u4e0b\u7684\u7684__init__.py\u6587\u4ef6\u6dfb\u52a0\u4e0b\u9762\u4e24\u53e5\nimport pymysql\npymysql.install_as_MySQLdb()<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h1>\u4e8c\u3001\u6a21\u578b\u7684\u521b\u5efa\u4e0e\u6620\u5c04<\/h1>\n<h2>1.\u4f7f\u7528Django\u4e2d\u7684\u6a21\u578b<\/h2>\n<p><strong>\u5728app\u4e0b\u9762\u7684models.py\u4e2d\u521b\u5efadjango\u7684\u6a21\u578b\u7c7b.<\/strong><\/p>\n<p><font color=#999AAA >\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-python\">from django.db import models\n\nclass User(models.Model):  #\u6a21\u578b\u7c7b\u540d  \u5bf9\u5e94\u8868\u540d\n    id = models.AutoField(primary_key=True) #id \u53ef\u4ee5\u7701\u7565 \u4f1a\u81ea\u52a8\u521b\u5efa\n    name = models.CharField(max_length=30)  #\u5b57\u7b26\u7c7b\u578b\n    age = models.IntegerField()  #\u6574\u6570\u7c7b\u578b\n\n    def __str__(self):  #\u4f7f\u7528\u67e5\u8be2\u65b9\u6cd5\u65f6\uff0c\u6570\u636e\u7684\u5c55\u793a\u65b9\u5f0f\n        return &quot;User&lt;id={0}&gt;,name={1},age={2}&quot;.format(self.id, self.name, self.age)\n<\/code><\/pre>\n<h2>2.\u5c06\u6a21\u578b\u7c7b\u6620\u5c04\u5230\u6570\u636e\u5e93<\/h2>\n<ol>\n<li>\u9996\u5148\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4,\u8981\u521b\u5efa\u6620\u5c04\u6587\u4ef6\n<ul>\n<li><code>python  manage.py   makemigrations app_name<\/code><\/li>\n<li><code>\u547d\u4ee4\u540e\u9762\u53ef\u4ee5\u8ddfapp\u540d\u79f0,\u8868\u793a\u6307\u5b9a\u5bf9\u67d0\u4e2aapp\u7684\u6a21\u578b\u8fdb\u884c\u6620\u5c04,\u6ca1\u5199\u6240\u6709\u7684app\u90fd\u6267\u884c.<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4,\u5c06\u6620\u5c04\u6587\u4ef6\u4e2d\u7684\u6620\u5c04\u6570\u636e\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e2d\n<ul>\n<li><code>python  manage.py   migrate<\/code><\/li>\n<li><code>\u5728\u6267\u884c\u524d,\u4fdd\u8bc1\u6211\u4eec\u521b\u5efa\u6a21\u578b\u7684APP\u662f\u5df2\u7ecf\u6ce8\u518c\u8fc7\u7684APP<\/code>\n<pre><code class=\"language-c\">\n(django_moran) [lemon@iZbp159egvvktszc82dr5xZ testPro]$ python manage.py makemigrations model_test<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Migrations for &#039;model_test&#039;:<br \/>\nmodel_test\/migrations\/0001_initial.py<\/p>\n<ul>\n<li>\n<p>Create model User<\/p>\n<pre><code>![\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0](https:\/\/img-blog.csdnimg.cn\/ab3d22d430bf49d98854b09c79929914.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16)\n![\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0](https:\/\/img-blog.csdnimg.cn\/d5ec8f790bc9484babaec18d1253b350.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_19,color_FFFFFF,t_70,g_se,x_16)\n\u6253\u5f00\u6570\u636e\u6211\u4eec\u80fd\u770b\u5230\u521b\u5efa\u7684\u4ee5app\u540d_\u6a21\u578b\u540d\u7684\u6570\u636e\u8868,\u800c\u5176\u4ed6\u7684\u4e00\u4e9b\u8868\u683c\u662fdjango\u81ea\u52a8\u751f\u6210\u7684. \n**\u6ce8\u610f**:\u5982\u679c\u8981\u5220\u9664\u8868,\u90a3\u4e48\u53ef\u4ee5\u53bbdjango\u6a21\u578b\u4e2d\u6ce8\u91ca\u6389\u6a21\u578b\u7c7b,\u7136\u540e\u6267\u884c\u6620\u5c04\u7684\u547d\u4ee4,\u4e0d\u8981\u624b\u52a8\u5728\u547d\u4ee4\u884c\u91cc\u9762\u53bb\u5220\u9664.\n## 3.\u6570\u636e\u7684\u589e\u5220\u6539\u67e5\n### 3.1\u6570\u636e\u7684\u589e\u5220\u6539\u67e5----------\u589e\u52a0\u6570\u636e\n**\u5728\u89c6\u56fe\u51fd\u6570\u4e2d\u5bfc\u5165User\u6a21\u578b\u7c7b,\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u7684\u65b9\u6cd5\u6dfb\u52a0\u6570\u636e**\n```python\ndef add_user(request):\n#\u65b9\u6cd5\u4e00\nmoran = User(name=&#039;wuyifan&#039;, age=43)\nmoran.save()#\u4fdd\u5b58\u4e0a\u4f20\nreturn HttpResponse(&#039;\u6570\u636e\u6dfb\u52a0\u6210\u529f&#039;)\n\n#\u65b9\u6cd5\u4e8c\nwufeng = User()\nwufeng.name = &#039;Tom&#039;\nwufeng.age = 19\nwufeng.city = &#039;Shanghai&#039;\nwufeng.save()\nreturn HttpResponse(f&#039;\u6570\u636e{wufeng.name}\u6dfb\u52a0\u6210\u529f\uff01&#039;)\n\n#\u65b9\u6cd5\u4e09\nUser.objects.create(name=&#039;Siri&#039;, age=17, city=&#039;Shijiazhuang&#039;)\nreturn HttpResponse(&#039;\u6570\u636e\u6dfb\u52a0\u6210\u529f\uff01&#039;)\n\n#\u65b9\u6cd5\u56db\nUser.objects.get_or_create(name=&#039;Jerry&#039;, age=20)\nreturn HttpResponse(&#039;\u6570\u636e\u6dfb\u52a0\u6210\u529f\uff01&#039;)<\/code><\/pre>\n<h3>3.2\u6570\u636e\u7684\u589e\u5220\u6539\u67e5----------\u67e5\u627e\u6570\u636e<\/h3>\n<p><strong>\u5728\u89c6\u56fe\u51fd\u6570\u4e2d\u5bfc\u5165User\u6a21\u578b\u7c7b,\u5b9e\u73b0\u7b80\u5355\u7684\u67e5\u627e<\/strong><br \/>\n<code>&lt;QuerySet [&lt;User: User&lt;id=5&gt;,name=Ctmd,age=50&gt;]&gt;<\/code>\u652f\u6301\u7d22\u5f15<\/p>\n<pre><code class=\"language-python\">def select_user(request):\n#\u67e5\u8be2\u6240\u6709\u6570\u636e\nrs = User.objects.all()\nfor i in rs:\n    print(rs)\n#\u6761\u4ef6\u67e5\u8be2\u4e00\u4e2a\u8bb0\u5f55\u5bf9\u8c61\nrs = User.objects.get(id=1)  #get \u4e00\u822c\u67e5\u8be2\u4e3b\u952e\u5b57\u6bb5\nprint(rs)\n\n#\u83b7\u53d6\u6ee1\u8db3\u6761\u4ef6\u7684\u5bf9\u8c61\uff08\u7ed3\u679c\u662f\u4e00\u4e2aQuerySet,\u652f\u6301\u7d22\u5f15\uff09\nrs2 = User.objects.filter(age=50)\nprint(rs2[0])\n\n#\u67e5\u8be2\u7b2c\u4e00\u6761\u6570\u636e\nrs3 = User.objects.first()\nprint(rs3)\n\n#\u6392\u9664\u6761\u4ef6\u67e5\u8be2\nrs4 = User.objects.exclude(age=43)\nprint(rs4)\n\n#\u6392\u5e8f\u67e5\u8be2\nrs5 = User.objects.order_by(&#039;age&#039;)  #\u6b63\u5e8f\nrs5 = User.objects.order_by(&#039;-age&#039;)  #\u5012\u53d9\n\n#\u8303\u56f4\u67e5\u8be2\nrs6 = User.objects.filter(age__gt=18)  #gt:\u5927\u4e8e\nrs6 = User.objects.filter(age__lt=18)  #lt:\u5c0f\u4e8e\nrs6 = User.objects.filter(age__in=[18,40])  #\u95ed\u533a\u95f4\u8303\u56f4\nrs6 = User.objects.filter(age__range=(18,40))  #\u5f00\u533a\u95f4\u8303\u56f4\n\n#\u8f6c\u5b57\u5178\u5f62\u5f0f\u67e5\u8be2\nrs7 = User.objects.all().values()\nrs7 = User.objects.filter(age=18).values()\n\nreturn HttpResponse(&#039;\u6570\u636e\u67e5\u8be2\u5b8c\u6bd5&#039;)<\/code><\/pre>\n<h3>3.3\u6570\u636e\u7684\u589e\u5220\u6539\u67e5----------\u4fee\u6539\u6570\u636e<\/h3>\n<p><strong>\u5728\u89c6\u56fe\u51fd\u6570\u4e2d\u5bfc\u5165User\u6a21\u578b\u7c7b,\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u7684\u65b9\u6cd5\u66f4\u65b0\u6570\u636e<\/strong><\/p>\n<pre><code class=\"language-python\">def update_user(request):\n#\u65b9\u6cd5\u4e00\uff1a\u5148\u67e5\u8be2\u5230\u6570\u636e\uff0c\u518d\u8fdb\u884c\u5c5e\u6027\u4fee\u6539\n# res = User.objects.get(id=5)\n# res.name = &#039;WCTMD&#039;\n# res.age = 29\n# res.city = &#039;TianChang&#039;\n# res.save()\n# return HttpResponse(&#039;\u6570\u636e\u4fee\u6539\u5b8c\u6bd5&#039;)\n\n#\u65b9\u6cd5\u4e8c\uff1a\u76f4\u63a5\u67e5\u8be2\u4fee\u6539\nUser.objects.filter(id=5).update(city=&#039;DaTianChang&#039;)\nreturn HttpResponse(&#039;\u6570\u636e\u4fee\u6539\u5b8c\u6bd5&#039;)<\/code><\/pre>\n<h3>3.4\u6570\u636e\u7684\u589e\u5220\u6539\u67e5----------\u5220\u9664\u6570\u636e<\/h3>\n<p><strong>\u5728\u89c6\u56fe\u51fd\u6570\u4e2d\u5bfc\u5165User\u6a21\u578b\u7c7b,\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u7684\u65b9\u6cd5\u66f4\u65b0\u6570\u636e<\/strong><\/p>\n<pre><code class=\"language-python\">def delete_user(request):\nUser.objects.get(id=8).delete()\nUser.objects.filter(name=&#039;Siri&#039;).delete()\n\nreturn HttpResponse(&quot;\u6570\u636e\u5220\u9664\u5b8c\u6bd5&quot;)<\/code><\/pre>\n<h3>\u6570\u636e\u7684\u589e\u5220\u6539\u67e5--------\u6570\u636e\u5e93\u76f8\u5173\u7684\u63a5\u53e3\uff08QuerySet API)<\/h3>\n<p>1.\u4ece\u6570\u636e\u5e93\u4e2d\u67e5\u8be2\u51fa\u6765\u7684\u7ed3\u679c\u4e00\u822c\u662f\u4e00\u4e2a\u96c6\u5408\uff0c\u8fd9\u4e2a\u96c6\u5408\u53eb\u505a QuerySet.<br \/>\n2.QuerySet\u662f\u53ef\u8fed\u4ee3\u5bf9\u8c61.<br \/>\n3.QuerySet\u652f\u6301\u5207\u7247, \u4e0d\u652f\u6301\u8d1f\u7d22\u5f15.<br \/>\n4.\u53ef\u4ee5\u7528list\u5f3a\u884c\u5c06QuerySet\u53d8\u6210\u5217\u8868.<\/p>\n<\/li>\n<\/ul>\n<h1>\u4e09\u3001\u5e38\u7528\u7684\u67e5\u8be2\u53ca\u5b57\u6bb5\u7c7b\u578b<\/h1>\n<h2>1.\u5e38\u7528\u7684\u67e5\u8be2<\/h2>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/128e16eb6f454a01814cfc3dd8eb6d1e.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img src=\"https:\/\/img-blog.csdnimg.cn\/4cd01a34fead4743beb6cbb67af693c7.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>2.\u5e38\u7528\u7684\u5b57\u6bb5\u7c7b\u578b\u53ca\u6620\u5c04\u5173\u7cfb<\/h2>\n<ol>\n<li><code>IntegerField<\/code> : \u6574\u578b\uff0c\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u7684int\u7c7b\u578b\u3002<\/li>\n<li><code>CharField<\/code>:  \u5b57\u7b26\u7c7b\u578b\uff0c\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u7684varchar\u7c7b\u578b\uff0c\u901a\u8fc7max_length\u6307\u5b9a\u6700\u5927\u957f\u5ea6\u3002<\/li>\n<li><code>TextField<\/code>:  \u6587\u672c\u7c7b\u578b\uff0c\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u7684text\u7c7b\u578b\u3002<\/li>\n<li><code>BooleanField<\/code>: \u5e03\u5c14\u7c7b\u578b\uff0c\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u7684tinyint\u7c7b\u578b\uff0c\u5728\u4f7f\u7528\u7684\u65f6\u5019\uff0c\u4f20\u9012True\/False\u8fdb\u53bb\u3002\u5982\u679c\u8981\u53ef\u4ee5\u4e3a\u7a7a\uff0c\u5219\u7528NullBooleanField\u3002<\/li>\n<li><code>DateField:<\/code>  \u65e5\u671f\u7c7b\u578b\uff0c\u6ca1\u6709\u65f6\u95f4\u3002\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u662fdate\u7c7b\u578b\uff0c<br \/>\n\u5728\u4f7f\u7528\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u8bbe\u7f6eDateField.auto_now\u6bcf\u6b21\u4fdd\u5b58\u5bf9\u8c61\u65f6\uff0c\u81ea\u52a8\u8bbe\u7f6e\u8be5\u5b57\u6bb5\u4e3a\u5f53\u524d\u65f6\u95f4\u3002\u8bbe\u7f6eDateField.auto_now_add\u5f53\u5bf9\u8c61\u7b2c\u4e00\u6b21\u88ab\u521b\u5efa\u65f6\u81ea\u52a8\u8bbe\u7f6e\u5f53\u524d\u65f6\u95f4\u3002<\/li>\n<li><code>DateTimeField<\/code>:   \u65e5\u671f\u65f6\u95f4\u7c7b\u578b\u3002\u6620\u5c04\u5230\u6570\u636e\u5e93\u4e2d\u7684\u662fdatetime\u7c7b\u578b\uff0c<br \/>\n\u5728\u4f7f\u7528\u7684\u65f6\u5019\uff0c\u4f20\u9012datetime.datetime()\u8fdb\u53bb\u3002<br \/>\n<img src=\"https:\/\/img-blog.csdnimg.cn\/245b3587fcf249419ead9470d0cb89fe.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_18,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>3.Field\u5e38\u7528\u53c2\u6570<\/h2>\n<\/li>\n<li><code>primary_key<\/code>:  \u6307\u5b9a\u662f\u5426\u4e3a\u4e3b\u952e\u3002<\/li>\n<li><code>unique:<\/code>  \u6307\u5b9a\u662f\u5426\u552f\u4e00\u3002<\/li>\n<li><code>null<\/code>:  \u6307\u5b9a\u662f\u5426\u4e3a\u7a7a\uff0c\u9ed8\u8ba4\u4e3aFalse\u3002<\/li>\n<li><code>blank<\/code>: \u7b49\u4e8eTrue\u65f6form\u8868\u5355\u9a8c\u8bc1\u65f6\u53ef\u4ee5\u4e3a\u7a7a\uff0c\u9ed8\u8ba4\u4e3aFalse\u3002<\/li>\n<li><code>default<\/code>:  \u8bbe\u7f6e\u9ed8\u8ba4\u503c\u3002<\/li>\n<li><code>DateField.auto_now<\/code>:  \u6bcf\u6b21\u4fee\u6539\u90fd\u4f1a\u5c06\u5f53\u524d\u65f6\u95f4\u66f4\u65b0\u8fdb\u53bb\uff0c\u53ea\u6709\u8c03\u7528\uff0cQuerySet.update\u65b9\u6cd5\u5c06\u4e0d\u4f1a\u8c03\u7528\u3002\u8fd9\u4e2a\u53c2\u6570\u53ea\u662fDate\u548cDateTime\u4ee5\u53caTimModel.save()\u65b9\u6cd5\u624d\u4f1a\u8c03\u7528e\u7c7b\u624d\u6709\u7684\u3002<\/li>\n<li><code>DateField.auto_now_add<\/code>:  \u7b2c\u4e00\u6b21\u6dfb\u52a0\u8fdb\u53bb\uff0c\u90fd\u4f1a\u5c06\u5f53\u524d\u65f6\u95f4\u8bbe\u7f6e\u8fdb\u53bb\u3002\u4ee5\u540e\u4fee\u6539\uff0c\u4e0d\u4f1a\u4fee\u6539\u8fd9\u4e2a\u503c<\/li>\n<\/ol>\n<h1>\u56db\u3001\u8868\u5173\u8054\u5bf9\u8c61\u53ca\u591a\u8868\u67e5\u8be2<\/h1>\n<h2>1.\u8868\u5173\u7cfb\u7684\u5b9e\u73b0<\/h2>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/2147b73846ad43fdb99b5b9f2c7b0727.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img src=\"https:\/\/img-blog.csdnimg.cn\/cb35a53bc7634c4a8a3d47894a7315a3.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_19,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3><code>models.py\u793a\u4f8b<\/code><\/h3>\n<pre><code class=\"language-python\">from django.db import models\n\n#\u5b66\u9662\u4fe1\u606f\nclass Department(models.Model):\n    d_id = models.AutoField(primary_key=True)\n    d_name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return f&#039;d_id={self.d_id}, d_name={self.d_name}&#039;\n\n#\u5b66\u751f\u4fe1\u606f\u8868\nclass Student(models.Model):\n    s_id = models.AutoField(primary_key=True)\n    s_name = models.CharField(max_length=30)\n    dept = models.ForeignKey(&#039;Department&#039;, on_delete=models.CASCADE)#\u7ea7\u8054\u5220\u9664\n\n    def __str__(self):\n        return f&#039;d_id={self.s_id}, d_name={self.s_name}, dept={self.dept}&#039;\n\n#\u5b66\u751f\u8be6\u60c5\u8868\nclass Stu_detail(models.Model):\n    stu_id = models.OneToOneField(&#039;Student&#039;, on_delete=models.CASCADE)  #\u4e00\u5bf9\u4e00\u5173\u7cfb\uff1a\u5220\u9664\u5b66\u751f\u8868\u4e2d\u7684\u5b57\u6bb5\uff0c\u8be6\u60c5\u8868\u4e2d\u7684\u5b57\u6bb5\u4e5f\u4f1a\u88ab\u5220\u9664\n    age = models.IntegerField()\n    gender = models.BooleanField(default=True)\n    note = models.TextField()\n\n    def __str__(self):\n        return f&#039;stu_id={self.stu_id}, s_name={self.s_name}, dept={self.gender}, note={self.note}&#039;\n\n#\u8bfe\u7a0b\u4fe1\u606f\u8868\nclass Course(models.Model):\n    c_id = models.AutoField(primary_key=True)\n    c_name = models.CharField(max_length=50)\n    stu_course = models.ManyToManyField(&#039;Student&#039;)  #\u591a\u5bf9\u591a\u5173\u7cfb\n\n    def __str__(self):\n        return f&#039;c_id={self.c_id}, c_name={self.c_name}, stu_course={self.stu_course}&#039;\n<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/c83c26d5c2ba488282b35c0ebc593896.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>2.\u8868\u5173\u8054\u6570\u636e\u6dfb\u52a0<\/h2>\n<pre><code class=\"language-python\">from django.shortcuts import render\nfrom django.http import HttpResponse\nfrom .models import Student,Course,Department,Stu_detail\n\ndef add_user(request):\n    Department.objects.create(d_name=&#039;Music College&#039;)\n    Department.objects.create(d_name=&#039;Artist College&#039;)\n    Department.objects.create(d_name=&#039;Machine College&#039;)\n    Department.objects.create(d_name=&#039;Fuck College&#039;)\n    Department.objects.get_or_create(d_name=&#039;Fuck College&#039;)  ##\u63d2\u5165\u4e0d\u91cd\u590d\u7684\u6570\u636e\n    Department.objects.filter(d_id__gt=4).delete()   \n    return HttpResponse(&#039;\u6570\u636e\u6dfb\u52a0\u6210\u529f\uff01&#039;)<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/7fa7e0498e8a43699d77fa08773d48c9.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3>1).\u4e00\u5bf9\u591a\u5173\u7cfb\u7684\u5916\u952e-\u6570\u636e\u521b\u5efa(\u5b66\u9662\uff0c\u5b66\u751f)<\/h3>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/1dbc9877d59e40fdbc380c7cd1c379ca.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<code>**views.py**<\/code><\/p>\n<pre><code class=\"language-python\">    Student.objects.get_or_create(s_name=&#039;Jack&#039;, dept_id=1)\n    Student.objects.get_or_create(s_name=&#039;Tom&#039;, dept_id=2)\n    Student.objects.get_or_create(s_name=&#039;Bruce&#039;, dept_id=3)\n    Student.objects.get_or_create(s_name=&#039;Jimy&#039;, dept_id=4)\n====**\u6216\u8005\u901a\u8fc7\u4e3b\u952e\u8868\u65b0\u5efa\u6570\u636e**========**========**======================\n    d1 = Department.objects.get(d_id=1)\n    d1.student_set.create(s_name=&#039;XiaoMing&#039;)\n    d1.student_set.create(s_name=&#039;XiaoHong&#039;)<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/c40cfa257f364ee7a89cef6794356add.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3>2).\u4e00\u5bf9\u4e00\u5173\u7cfb\u7684\u5916\u952e-\u6570\u636e\u521b\u5efa\uff08\u5b66\u751f\uff0c\u5b66\u751f\u8be6\u60c5\uff09<\/h3>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/92f56420884a4cfc92b71e863531730f.png?x-oss-process=image\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVtb25fZ3Vlc3M=,size_17,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<code>**views.py**<\/code><\/p>\n<pre><code class=\"language-python\">    Stu_detail.objects.get_or_create(age=20, gender=1, note=&#039;fuck you all the time&#039;, stu_id_id=1)\n    Stu_detail.objects.get_or_create(age=18, gender=1, note=&#039;gi gi gi gi,baby baby baby&#039;, stu_id_id=2)<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/c0f20f646f204f32aa2ec7a036b77b37.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3>3).\u591a\u5bf9\u591a\u5173\u7cfb\u7684\u5916\u952e-\u6570\u636e\u521b\u5efa\uff08\u8bfe\u7a0b\uff0c\u5b66\u751f\uff09<\/h3>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/6208b8b8584d482a93ffe2ac7b1892f2.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p><code>**views.py**<\/code><\/p>\n<pre><code class=\"language-python\">    #\u591a\u5bf9\u591a\u4e2d\u95f4\u8868\u7684\u6570\u636e\u521b\u5efa\uff1a\u5148\u83b7\u53d6\u8bfe\u7a0b\uff0c\u518d\u5c06\u8bfe\u7a0b\u6dfb\u52a0\u5230\u5b66\u751f\u4e2d\n    c1 = Course.objects.get(c_id=1)\n    c2 = Course.objects.get(c_id=2)\n    s1 = Student.objects.get(s_id=1)\n    s1.course_set.add(c1, c2)\n====**\u6216\u8005\u901a\u8fc7\u5b66\u751f\u5bf9\u8c61\u76f4\u63a5\u521b\u5efa\u5e76\u5173\u8054\u8be5\u8bfe\u7a0b**======**======**=======================\n    s1 = Student.objects.get(s_id=1)\n    s1.course_set.create(c_name=&quot;Django&quot;) <\/code><\/pre>\n<p><code>add\u53ef\u4ee5\u505a\u6dfb\u52a0\uff0c\u4e5f\u6709\u76f4\u63a5\u4fee\u6539\u7684\u4f5c\u7528<\/code><br \/>\n<img src=\"https:\/\/img-blog.csdnimg.cn\/506cb87c23304f3fb40e5bdf2b4db39d.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>3.\u8868\u5173\u7cfb\u5bf9\u8c61\u7684\u8bbf\u95ee<\/h2>\n<p><strong>\u5148\u5b9e\u4f8b\u5316\u4e00\u4e2a\u5b57\u6bb5\u5bf9\u8c61\uff0c\u518d\u901a\u8fc7\u8bbf\u95ee\u5176\u5916\u952e\u540d\u627e\u5230\u5173\u8054\u6570\u636e<\/strong><\/p>\n<pre><code class=\"language-python\">def query(request):\n    #\u4e00\u5bf9\u591a\u8868\u5c5e\u6027\u8bbf\u95ee\n    d3 = Department.objects.get(d_id=3)  #\u5b66\u9662\u7684\u5b9e\u4f8b\u5bf9\u8c61\n    s1 = Student.objects.get(s_id=1)  #\u5b66\u751f\u5b9e\u4f8b\u5bf9\u8c61\n    rs = s1.dept.d_name  #\u901a\u8fc7\u5b66\u751f\u627e\u5230\u6240\u5c5e\u7684\u5b66\u9662\n    rs = d3.student_set.all()  #\u5b66\u9662\u4e2d\u6240\u6709\u7684\u5b66\u751f\n\n    #\u4e00\u5bf9\u4e00\u8868\u5c5e\u6027\u8bbf\u95ee\n    stu = Stu_detail.objects.get(id=1)  #\u5b66\u751f\u8be6\u60c5\u5bf9\u8c61\n    rs = stu.stu_id.s_name\n\n    #\u591a\u5bf9\u591a\u5c5e\u6027\u8bbf\u95ee\n    s1 = Student.objects.get(s_id=1)\n    rs = s1.course_set.all()\n\n    c1 = Course.objects.get(c_id=1)  #\u8bfe\u7a0b\u5b9e\u4f8b\u5bf9\u8c61\n    rs = c1.stu_course.all()\n\n    return HttpResponse(rs)<\/code><\/pre>\n<h2>4.\u79fb\u9664\u6570\u636e<\/h2>\n<p><strong>\u591a\u5bf9\u591a\u5173\u8054\u5bf9\u8c61\u5173\u7cfb\u5220\u9664<\/strong><\/p>\n<pre><code class=\"language-python\">def remove(request):\n\n    s1 = Student.objects.get(s_id=1)\n    c2 = Course.objects.get(c_id=1)\n    #s1.course_set.remove(c2)\n    s1.course_set.clear()\n    return HttpResponse(&#039;\u8bfe\u7a0b\u79fb\u9664\u5b8c\u6210&#039;)<\/code><\/pre>\n<p><img src=\"https:\/\/img-blog.csdnimg.cn\/81e86438a59640adb64a306988af2345.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2>5.\u591a\u8868\u67e5\u8be2<\/h2>\n<p>Django \u63d0\u4f9b\u4e00\u79cd\u5f3a\u5927\u800c\u53c8\u76f4\u89c2\u7684\u65b9\u5f0f\u6765\u201c\u5904\u7406\u201d\u67e5\u8be2\u4e2d\u7684\u5173\u8054\u5173\u7cfb\uff0c\u5b83\u5728\u540e\u53f0\u81ea\u52a8\u5e2e\u4f60\u5904\u7406JOIN\u3002 \u82e5\u8981\u8de8\u8d8a\u5173\u8054\u5173\u7cfb\uff0c\u53ea\u9700\u4f7f\u7528\u5173\u8054\u7684\u6a21\u578b\u5b57\u6bb5\u7684\u540d\u79f0\uff0c\u5e76\u4f7f\u7528\u53cc\u4e0b\u5212\u7ebf\u5206\u9694\uff0c\u76f4\u81f3\u4f60\u60f3\u8981\u7684\u5b57\u6bb5\uff1a<br \/>\n<code># \u67e5\u8be2\u5b66\u9662\u540d\u5b57\u4e3a\u2018\u8ba1\u7b97\u673a\u5b66\u9662\u2019\u7684\u5b66\u751f\u7684\u4fe1\u606f Student.objects.filter(department__d_name='\u8ba1\u7b97\u673a\u5b66\u9662') <\/code><br \/>\n\u5b83\u8fd8\u53ef\u4ee5\u53cd\u5411\u5de5\u4f5c\u3002\u82e5\u8981\u5f15\u7528\u4e00\u4e2a\u201c\u53cd\u5411\u201d\u7684\u5173\u7cfb\uff0c\u53ea\u9700\u8981\u4f7f\u7528\u8be5\u6a21\u578b\u7684\u5c0f\u5199\u7684\u540d\u79f0\u3002<br \/>\n<code>#\u67e5\u8be2\u5b66\u751f\u540d\u5b57\u4e2d\u5305\u542b '\u5c0f' \u7684\u5b66\u751f\u7684\u5b66\u9662\u4fe1\u606f Department.objects.filter(student__s_name__contains='\u5c0f') <\/code><br \/>\n<code># \u67e5\u8be2\u5b66\u53f7\u4e3a1\u7684\u5b66\u751f\u6240\u6709\u7684\u8bfe\u7a0b Course.objects.filter(student__s_id=1)<\/code><br \/>\n<code># \u67e5\u8be2\u62a5\u4e86\u8bfe\u7a0b1\u7684\u6240\u6709\u7684\u5b66\u751f<\/code><br \/>\n<code>Student.objects.filter(course__c_id=1)<\/code><br \/>\n<code># \u67e5\u8be2\u62a5\u4e86&#039;python&#039;\u8bfe\u7a0b\u7684\u7684\u5b66\u751f\u7684\u6240\u5c5e\u5b66\u9662\u7684\u4fe1\u606f<\/code><br \/>\n<code><code>Department.objects.filter(student__course__c_name=&#039;python&#039;)<\/code><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u6570\u636e\u5e93\u914d\u7f6e 1.ORM\u6982\u5ff5 \u5b9a\u4e49\uff1a\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff08Object Relational Mapping,\u7b80\u79f0ORM\uff09 \u4f18\u52bf\uff1a\u4e0d\u7528\u76f4\u63a5\u7f16\u5199   \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[26],"tags":[],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/313"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=313"}],"version-history":[{"count":1,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/313\/revisions"}],"predecessor-version":[{"id":314,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/313\/revisions\/314"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=313"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}