Django Models相關

來源:互聯網
上載者:User

標籤: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相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.