日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

django-model操作数据库(增删改查)

發布時間:2025/5/22 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django-model操作数据库(增删改查) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

django-model操作數據庫(增刪該查)

一、數據庫操作

1、創建model表

?

基本結構

更多字段:

  • + View Code

  • 更多參數

  • + View Code

  • 2、注冊APP,settings添加app

  • 3、生成相應的表

    ? python manage.py makemigrations

    ? python manage.py migrate

    4、admin后臺注冊表

    python manage.py createsuperuser 創建用戶

    后臺可以管理,添加數據

    ?

    ?

    對數據進行增刪改查

    models.UserInfo.objects.all()

    models.UserInfo.objects.all().values('user') #只取user列

    models.UserInfo.objects.all().values_list('id','user') #取出id和user列,并生成一個列表

    models.UserInfo.objects.get(id=1)

    models.UserInfo.objects.get(user='yangmv')

    成功獲取數據

    models.UserInfo.objects.create(user='yangmv',pwd='123456')

    或者

    obj = models.UserInfo(user='yangmv',pwd='123456')

    obj.save()

    或者

    dic = {'user':'yangmv','pwd':'123456'}

    models.UserInfo.objects.create(**dic)

    ?

    models.UserInfo.objects.filter(user='yangmv').delete()

    models.UserInfo.objects.filter(user='yangmv').update(pwd='520')

    或者

    obj = models.UserInfo.objects.get(user='yangmv')

    obj.pwd = '520'

    obj.save()

  • 常用方法

    + View Code

    ?

  • 二、常用字段

    models.DateTimeField  日期類型 datetime

    參數,

    auto_now = True :則每次更新都會更新這個時間

    auto_now_add 則只是第一次創建添加,之后的更新不再改變。

    ?

      

    ?

    ?

    表結構的修改

    表結構修改后,原來表中已存在的數據,就會出現結構混亂,makemigrations更新表的時候就會出錯

    解決方法:

    1、新增加的字段,設置允許為空。生成表的時候,之前數據新增加的字段就會為空。(null=True允許數據庫中為空,blank=True允許admin后臺中為空)

    2、新增加的字段,設置一個默認值。生成表的時候,之前的數據新增加字段就會應用這個默認值

    執行makemigrations, migrate 后。老數據會自動應用新增加的規則

    ?

    ?

    models.ImageField 圖片

    models.GenericIPAddressField IP

    ip = models.GenericIPAddressField(protocol="ipv4",null=True,blank=True)
    img = models.ImageField(null=True,blank=True,upload_to="upload")

    ?

    數據庫中保存的只是圖片的路徑

    ?

    ?

    常用參數

    選擇下拉框 choices


    class UserInfo(models.Model):
    ? USER_TYPE_LIST = (
    ? ? ? (1,'user'),
    (2,'admin'),
    )
    ? user_type = models.IntegerField(choices=USER_TYPE_LIST,default=1)

    ?

    ?

    ?

    ?

    2、連表結構

    • 一對多:models.ForeignKey(其他表)

    • 多對多:models.ManyToManyField(其他表)

    • 一對一:models.OneToOneField(其他表)

    應用場景:

    • 一對多:當一張表中創建一行數據時,有一個單選的下拉框(可以被重復選擇)例如:創建用戶信息時候,需要選擇一個用戶類型【普通用戶】【金牌用戶】【鉑金用戶】等。

    • 多對多:在某表中創建一行數據是,有一個可以多選的下拉框例如:創建用戶信息,需要為用戶指定多個愛好

    • 一對一:在某表中創建一行數據時,有一個單選的下拉框(下拉框中的內容被用過一次就消失了例如:原有含10列數據的一張表保存相關信息,經過一段時間之后,10列無法滿足需求,需要為原來的表再添加5列數據

    ?

    一對多:

      

    這是Game表,里面有3個業務

    這是主機表,可以通過外鍵,對應到Game表的業務的ID

    ![img](https://images2015.cnblogs.com/blog/884635/201603/884635-20160327235723323-817764474.png

    ?

    ?

    多對多:

     

    Django model會自動創建第3張關系表,用于對應user id 和usergroup id

    這是UserGroup表

    這是User表

    這是Django自動生成的對應關系表

    user_id = 1 為 yangmv,同時屬于1,2(技術部,運營部)

    ?

    ?

    ?

    一對一: (一對多增加了不能重復)

      

    ?

    ?

    ?

    ?

    連接Mysql

  • + View Code

      

  • ?

    一對多操作實例

    首先生成2個表

      

    input和select標簽用forms生成

    ?

    先執行create_group生成3個group

    ?

    已經查詢出Group數據

    添加

    方法1,方法2

      

    ?

    方法3

      

    查詢。展示出所有的數據

      

      

    ?

    GET方式查詢

    ?

      

    一對多跨表操作,總結

    1、group2對應的是一個對象

    2、創建數據 group2_id ,直接查詢數據庫

    3、獲取數據,通過. group2.caption

    4、查詢數據,通過__ group2__caption

    ?

    ?

    轉載于:https://www.cnblogs.com/zuichuyouren/p/11094673.html

    總結

    以上是生活随笔為你收集整理的django-model操作数据库(增删改查)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。