-
筆記test
查看全部 -
不返回queryAPI
1.獲取對象get(),get_or_create(),frist(),last(),latest(),earliest(),in_bulk()
2.創建對象create(),bulk_create(),create_or_updata()創建,批量創建,創建或更新
3.更新對象updata()updata_or_create()更新,更新或創建
4.刪除對象delete()使用filte過濾
5其他操作exists(),count(),aggrrgate()判斷是否存在,統計個數,聚合
查看全部 -
返回新的queryset得api:
exclude()根據條件排除一些記錄Student.objects.all().exclude(name='a')
reverse()反向排序必須在模型類對應的元數據設置排序Student.objects.all().exclude(name='a').reverse()
distinct()去重
extra()實現字段別名
defer()排除一些字段
only()選擇一些字段
valus(),valus_list()獲取字典或元組形式得queryset
datas(),datatimes()根據時間日期獲取查詢集
union(),intersection(),difference()并集,交集,差集
select_relate()一對一多對一查詢優化
prefetch_related()一對多,多對多查詢優化;反向查詢
annotate()使用聚合函數、求和、平均數 raw ()執行原生sql
course.objects,values('teacher').annotatea(avg = Avg'字段名')
查看全部 -
查詢集介紹:
查詢、檢索、過濾
teacher = Teacher.objects.all()
teacher = Teacher.objects.get(主鍵、唯一鍵)返回一條結果
teacher = Teacher.objects.filter(fans__gte =) 返回多條結果 字段數據匹配大小寫敏感 (fans__gte =大于等于、fans__exact剛好等于、fans__gt大于、fans__in在某某之內 、fans__isnull是否為空、fans__lt小于、fans__lte小于等于、fans__range在某某范圍之內、、、、)
結果切片、排序、鏈式查詢
Teacher.Object.all()[:1]
Teacher.Object.all().order_by('fans')/('-fans')
Teacher.Object.filter(fans__get).order_by('nickname')
查看執行的原生sql:
str(語句例如Teacher.Object.filter(fans__get).order_by('nickname').query)
查看全部 -
自增長字段,默認int,Auto = models.AutoFileld()
bigAuto?= models.bigAutoFileld()
二進制數據:Binary = models.BinaryField()
布爾型:Boollean = models.BooleanField()
NullBoolean = models.NullBooleanField()
整型:5個字節:PositiveSmallInteger = models.PositiveSmallIntegerField()
6個字節:SmallInteger = models.SmallIntegerField()
10個字節:PositiveInteger = models.PositiveIntegerField()
11個字節:Integer = models.IntegerField()
20個字節:BigInteger = models.BigIntegerField()
字符串:varchar:Char = models.CharField()
longtext:Text?= models.TextField()
時間日期:Data = models.DataField()? 年月日
DataTime = models.DataTimeField()? 年月日時分秒
Duration = models.DurationField()? int
浮點型:Float = FloatField()
Decimal = model.DecimalField()
其他字段:
Email = models.EmailField()
Image = models.ImageField()
File = models.FileField()
FilePath = models.FilePathField()
Url = models.UrlField()
UUID = models.UUIDField()
GenericIPAddress = models.GenericIPAddressField()
查看全部 -
F對象: 操作字段的數據
Course.objects.update(price=F('price') - 11) # 所有課程價格減11
Course.objects.filter(volume__lte=F('price') * 10)) # 查詢課程價格的10倍小于銷量的課程
Q對象: 結合AND, OR, NOT, |, ~, &實現復雜的查詢
Couse.objects.filter(Q(title__icontains='java') & Q(volume__gte=5000)) # 查詢銷量大于等于5000的java課程
查看全部 -
select_related和prefetch_related保證在查詢對象集合的時候,把指定的外鍵對象也一并完整查詢加載,避免后續的重復查詢
select_related適用于外鍵和多對一的關系查詢
prefetch_related適用于一對多或者多對多的查詢
查看全部 -
向數據表中導入數據的三種方式:
django shell: python manage.py shell => from courses.teacher import Teacher => t = Teacher(nickname="jack")=>t.save()
通過腳本導入數據(見截圖)
Teacher.objects.create(nickname="Jack", introduction="Python工程師", fans=123)
Course.object.bulk_create([Course(title="Python系列教程(1)", teacher=Teacher.objects.get(nickname="Jack"), type=.....)])
Student.objetcs.update_or_create(nickname="ABC", default={"age": 18, "gender": 2, "study_time": 0})
TeacherAssistant.objects.get_or_create(nickname="助教1", default={"hubby":? "慕課網學習", "teacher": Teacher.objects.get(nickname="Jack")})
關聯外鍵:
正向添加: Student.objects.get(nickname="ABC").course.add(*Course.objects.filter(volume__gte=1000)) # ABC學生關聯到銷量大于1000的課程
反向添加: Course.objetcs.get(title="Python系列教程2").student_set.add(*Student.objetcs.filter(study_time__gte=500)) #關聯到學習時間大于500小時的同學
fixtures Django Serialization:提供一種可以被Django的Serialization識別的json格式的文件
導出數據: python manage.py dumpdata > xxxx.json
導入數據: python manage.py loaddata xxxx.json
查看全部 -
刪除一個模型類的步驟
刪除模型類代碼
刪除模型類在migrations目錄下生成的對應文件
刪除django在數據表migrations中對應的生成記錄
刪除對應的數據表
查看全部 -
Meta數據
db_table: 指定數據表的名稱
ordering: 指定按照哪些字段來排序, 類型為一元元組
verbose_name: 為模型類設置一個直觀可讀的名稱
abstract: =True將該類設置為基類, 不生成數據表, 僅供其它類繼承
permissions: 為數據表設置額外的權限, 通過二元元組來實現(('定義好的權限', '權限的說明'), )
managed: 表示是否按照django既定的規則來管理數據表, 默認是True
unique_together: 指定聯合唯一鍵,可以使用一元元組或二元元組(即多個唯一約束)
app_label: 定義模型類屬于哪一個應用
db_tablespace: 定義數據表空間的名字
查看全部 -
自關聯的兩種寫法
pid = models.ForeignKey('self', null=True, blank=True)
pid = models.ForeignKey('${TableName}', null=True, blank=True)
查看全部 -
關系型字段的on_delete參數
查看全部 -
所有字段都有的屬性值
editable: 是否可以編輯, 默認為False
help_text: 在表單中顯示幫助信息的參數
db_index: 為當前字段建立索引, 默認為False
null/blank: 字段是否可以為空, null約束數據庫層面, blank約束前端表單提交時
unique: 唯一性約束, 默認為False
verbose_name: 設置字段別名(或備注)
primary_key: 設置當前字段是否為主鍵, 默認為False
db_column: 設置當前字段的名稱
屬于個別字段的參數
max_length[CharField]
unique_for_date[DateField]: 字段日期必須唯一
unique_for_month[DateField]
auto_now[DateField]: 修改記錄時是否自動更新當前日期
auto_now_add[DateField]: 添加記錄時是否自動設置當前日志
max_digits[DecimalField]: 總共有多少位
decimal_places[DecimalField]: 小數點后數字的個數
關系型字段的參數
related_name: 外鍵關聯中的反向查詢,由父表查詢子表的信息
on_delete:?當一個被外鍵關聯的對象被刪除時,Django將模仿on_delete參數定義的SQL約束執行相應操作
CASCADE: 模擬SQL語言中的ON DELETE CASCADE約束,將定義有外鍵的模型對象同時刪除(該操作為當前Django版本的默認操作)
PROTECT: 阻止上面的刪除操作, 彈出ProtectedError異常
SET_NULL: 將外鍵字段設為null, 只有當字段設置了null=True時, 方可使用該值
SET_DEFAULT: 將外鍵字段設為默認值, 只有當字段設置了default參數時,方可使用
DO_NOTHING: 什么也不做
SET(): 設置為一個傳遞給SET()的值或者一個回調函數的返回值, 注意大小寫
查看全部 -
一對一(OneToOneField)
models.OneToOneField(Test)
多對一(ForeignKey)
foreign = models.ForeignKey(Other)
多對多(ManyToManyField),默認或自定義中間表
models.ManyToManyField(B)
查看全部 -
#?自增長字段 Auto?=?models.AutoField() BigAuto?=?models.BigAutoField() #?二進制數據 Binary?=?models.BinaryField() #?布爾型 Boolean?=?models.BooleanField() NullBoolean?=?models.NullBooleanField() #?整型 PositiveSmallInteger?=?models.PositiveSmallIntegerField(db_column="age")??#?5個字節 SmallInteger?=?models.SmallIntegerField(primary_key=False)??#?6個字節 PositiveInteger?=?models.PositiveIntegerField()??#?10個字節 Integer?=?models.IntegerField(verbose_name="11個字節大小")??#?11個字節 BigInteger?=?models.BigIntegerField(unique=True)??#?20個字節 #?字符串類型 Char?=?models.CharField(max_length=100,?null=True,?blank=True,?db_index=True)??#?varchar Text?=?models.TextField(help_text="這個是longtext")??#?longtext #?時間日期類型 Date?=?models.DateField(unique_for_date=True,?auto_now=True) DateTime?=?models.DateTimeField(editable=False,?unique_for_month=True,?auto_now_add=True) Duration?=?models.DurationField()??#?int,?Python?timedelta實現 #?浮點型 Float?=?models.FloatField() Decimal?=?models.DecimalField(max_digits=4,?decimal_places=2)??#?11.22,?16.34 #?其它字段 Email?=?models.EmailField()??#?郵箱 Image?=?models.ImageField() File?=?models.FileField() FilePath?=?models.FilePathField() URL?=?models.URLField() UUID?=?models.UUIDField() GenericIPAddress?=?models.GenericIPAddressField()
查看全部
舉報