一、數據庫操作
1、創建model表
基本結構
更多字段:
更多參數
-
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()
-
常用方法
二、常用字段
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

一對一: (一對多增加了不能重復)
連接Mysql
一對多操作實例
首先生成2個表
input和select標簽用forms生成
先執行create_group生成3個group
已經查詢出Group數據
添加
方法1,方法2
方法3
查詢。展示出所有的數據
GET方式查詢
一對多跨表操作,總結
1、group2對應的是一個對象
2、創建數據 group2_id ,直接查詢數據庫
3、獲取數據,通過. group2.caption
4、查詢數據,通過__ group2__caption