1. 程式人生 > 程式設計 >Django Model中欄位(field)的各種選項說明

Django Model中欄位(field)的各種選項說明

欄位與選項

CharField() 字元欄位

max_length = xxx or None # 必選項

blank = True 和 default = '' # 如果不是必填項,可以設定

unique = True # 如果想要使其唯一,比如用於username,可以設定

choices = xxx_CHOICES # 如果有choice選項,可以設定

TextField() 文字欄位

max_length = xxx

blank = True 和 default = '' # 如果不是必填項,可以設定

DateField() and DateTimeField() 日期與時間欄位

default date # 一般建議設定預設日期

DateField:default = date.today # 需要匯入包 from datetime import date

DateTimeField:default = timezone.now # 需要匯入包 from django.utils import timezone

auto_now = True # 對於上一次修改日期(last_modifiel date),可以設定

EmailField() 郵件欄位

unique = True # 一般Email用於使用者名稱應該是唯一的,建議設定

IntegerField(),SlugField(),URLField(),BoolField()

blank = True 和 default = '' # 如果不是必填項,可以設定

default = True or False # 對於BoolField一般建議設定

FileField() 檔案欄位

upload_to ="/some folder/ " # 檔案指向檔案,必填項

max_length = xxx

ImageField(upload_to = None,**options) 圖片欄位

upload_to = "/some folder/" # 圖片指向檔案,必填項

height_field = None

width_field = None

max_length = xxx

ForeighKey(to,on_delete,**options) 一對多關係

to # 必須指向其他模型

on_delete = models.CASCADE or models.SET_NULL # on_delete指定刪除選項

"default = xxx" or "null = True"

"limit_choices_to = " # 如果有必要,可以設定

related_name = xxx # 便於反向查詢

舉例:

xxx = models.ForeignKey(xxx,on_delete = models.CASCADE,limit_choices_to = {'is_staff':True},related_name = xxx)

ManyToManyField(to,**options) 多對多關係

to # 必須只想其他模型

symmetrical = False # 如果多對多關係不是對稱的,可以設定

through = 'intermediary model # 如果需要建立中間模型來蒐集更多資訊,可以設定

related_name = xxx # 便於反向查詢

補充知識:django 使用annotate定義欄位後排序翻頁重複的問題

objs = A.objects.annotate(number=Sum('b__number')).order_by('-number')

此時對objs翻頁,在number資料相同的地方翻頁資料可能會混亂(重複)

解決辦法,加上id排序

objs = A.objects.annotate(number=Sum('b__number')).order_by('-number','id')

以上這篇Django Model中欄位(field)的各種選項說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。