標籤:admin 14. ice index integer 建立 unique choice rate
Models的相關知識
1. AutoField:自增整數類型。根據 ID 自增長的 Int欄位2. IntegerField:整數類型3. BigIntegerField:大整數類型。用於數值較大時,類似於IntegerField4. SmallIntegerField:小整數類型。數值的取值範圍較小,受限於資料庫的限制5. BooleanField:布爾值(true/false)類型。6. CharField:字串類型。7. CommaSeparatedInterField:存放以逗號間隔的整數序列8. DateField:日期類型。datetime.date 執行個體9. DateTimeField:日期類型。datetime.datetime 執行個體10. EmailField:字串類型(Regex郵箱)11. FileField:檔案類型。12. FilePathField:檔案類型。某個目錄中的所有檔案名稱集合13. FloatField:浮點數類型14. ImageField:圖片檔案類型15. IPAddressField:IP地址類型。字串形式(比如 "192.0.2.30")表示16. GenericIPAddressField:IP地址類型。字串形式(比如 "192.0.2.30"或者"2a02:42fe::4")表示17. NullBooleanField:類似於BooleanField。允許值為null18. PositiveIntegerField:和 IntegerField 相似。欄位值必須是非負數19. PositiveSmallIntegerField:和 PositiveIntegerField 類似,但數值的取值範圍較小,受限於資料庫設定。20. SlugField:短標籤。主要用於基於其他欄位的值來自動填滿 Slug 欄位21. TextField:和 Charfield 類似。用於儲存文本。22. TimeField:時間類型。datetime.time 執行個體23. URLField:URL類型。24. UUIDField:唯一標識類型。25. BinaryField:二進位類型26. Decimal:十進位小數類型27. ForeignKey:外鍵類型28. ManyToManyField:多對多類型29. OneToOneField:一對一類型
欄位選項
1. null=True 資料庫中欄位是否可以為空白2. blank=True django的 Admin 中添加資料時是否可允許空值3. primary_key = False 主鍵,對AutoField設定主鍵後,就會代替原來的自增 id 列4. auto_now 和 auto_now_add auto_now 自動建立---無論添加或修改,都是當前操作的時間 auto_now_add 自動建立---永遠是建立時的時間5. choicesGENDER_CHOICE = ( (u‘M‘, u‘Male‘), (u‘F‘, u‘Female‘), )gender = models.CharField(max_length=2,choices = GENDER_CHOICE)6. max_length7. default 預設值8. verbose_name Admin中欄位的顯示名稱9. name|db_column 資料庫中的欄位名稱10. unique=True 不允許重複11. db_index = True 資料庫索引12. editable=True 在Admin裡是否可編輯13. error_messages=None 錯誤提示14. auto_created=False 自動建立15. help_text 在Admin中提示協助資訊16. validators=[] 自訂錯誤驗證(清單類型)17. upload-to 上傳到哪個位置,更多與image,filepath配合使用
values() 和、vlue_list() 與 all()
# User為Models類
.all()是取得所有列的資料,可以加.values()取出某一列,每一個元素為一個字典:
obj = model.User.objects.filter(name=‘alex‘).values(‘id‘,‘email‘)
# 相當於SQL語句: select id, email from user where name=‘alex‘
queryset -> python,Django的類[{‘id‘:1},{‘id‘: 2},]values_list(),擷取到的元素為一個個元組,也可以加多個參數來擷取多列:
obj = model.User.objects.filter(name=‘alex‘).value_list(‘id‘,‘email‘)
相當於SQL語句: select id, email from user where name=‘alex‘
queryset -> python,Django的類[(1,‘[email protected]‘),(2,‘[email protected]‘),]
表基本操作
# 增models.User.objects.create(id=‘xx‘, name=‘xx‘) 增加一條資料,可以接受字典類型資料 **kwargsobj = models.User(id=‘xx‘, name=‘xx‘)obj.save() # 查models.User.objects.get(id=123) # 擷取單條資料,不存在則報錯(不建議)models.User.objects.all() # 擷取全部資料models.User.objects.filter(name=‘seven‘) # 擷取指定條件的資料 # 刪models.User.objects.filter(name=‘seven‘).delete() # 刪除指定條件的資料 # 改models.User.objects.filter(name=‘seven‘).update(gender=‘0‘) # 將指定條件的資料更新,均支援 **kwargsobj = models.User.objects.get(id=1)obj.name = ‘Delav‘
雙劃線操作
用法: # 欄位名稱 + __ + 關鍵字
__exact 精確等於 like ‘aaa‘__iexact 精確等於 忽略大小寫 ilike ‘aaa‘__contains 包含 like ‘%aaa%‘__icontains 包含 忽略大小寫 ilike ‘%aaa%‘,但是對於sqlite來說,contains的作用效果等同於icontains。__gt 大於__gte 大於等於__lt 小於__lte 小於等於__in 存在於一個list範圍內__startswith 以...開頭__istartswith 以...開頭 忽略大小寫__endswith 以...結尾__iendswith 以...結尾,忽略大小寫__range 在...範圍內__year 日期欄位的年份__month 日期欄位的月份__day 日期欄位的日__isnull=True/False
# 擷取個數models.User.objects.filter(name=‘seven‘).count() # 大於,小於models.User.objects.filter(id__gt=1) # 擷取id大於1的值models.User.objects.filter(id__lt=10) # 擷取id小於10的值models.User.objects.filter(id__lt=10, id__gt=1) # 擷取id大於1 且 小於10的值 # inmodels.User.objects.filter(id__in=[11, 22, 33]) # 擷取id等於11、22、33的資料models.User.objects.exclude(id__in=[11, 22, 33]) # not in # containsmodels.User.objects.filter(name__contains="ven") # name中包含 ven 的資料models.User.objects.filter(name__icontains="ven") # icontains大小寫不敏感models.User.objects.exclude(name__icontains="ven") # name中不包含 ven的資料 # rangemodels.User.objects.filter(id__range=[1, 3]) # 範圍between and # 其他類似startswith,istartswith, endswith, iendswith, # order bymodels.User.objects.filter(name=‘seven‘).order_by(‘id‘) # ascmodels.User.objects.filter(name=‘seven‘).order_by(‘-id‘) # desc # limit 、offsetmodels.User.objects.all()[10:20] # group byfrom django.db.models import Count, Min, Max, Summodels.User.objects.filter(c1=1).values(‘id‘).annotate(c=Count(‘num‘))
Django Models相關