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


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

一、數據庫操作

1、創建model表

基本結構

更多字段:

  1. + View Code

更多參數

  1. + View Code

  2. 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()

  1. 常用方法

    + 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

  1. + 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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM