標籤:
自增主鍵欄位¶
預設情況下,Django 會給每個模型添加下面這個欄位:
id = models.AutoField(primary_key=True)
這是一個自增主鍵欄位。
如果你想指定一個自訂主鍵欄位,只要在某個欄位上指定primary_key=True 即可。如果 Django 看到你顯式地設定了 Field.primary_key,就不會自動添加 id 列。
每個模型只能有一個欄位指定primary_key=True(無論是顯式聲明還是自動添加)。
欄位的自述名¶
除ForeignKey、ManyToManyField 和 OneToOneField 之外,每個欄位類型都接受一個可選的位置參數 —— 欄位的自述名。
如果沒有給定自述名,Django 將根據欄位的屬性名稱自動建立自述名 —— 將屬性名稱的底線替換成空格。
在這個例子中,自述名是 "person‘s first name":
first_name = models.CharField("person‘s first name", max_length=30)
在這個例子中,自述名是 "first name":
first_name = models.CharField(max_length=30)
##########
first_name = models.CharField("person‘s first name", max_length=30) -->第一個參數可建立欄位的自述名
first_name = models.CharField(max_length=30) -->若沒有建立欄位的自述名, Django 將根據欄位的屬性名稱自動建立自述名—— 將屬性名稱的底線替換成空格。
first_name 是欄位的屬性名稱。
##########
下面是幾個特例,特例的原因是在於這些欄位的第一參數是模型,而不是參數,需要使用verbose_name關鍵字參數來指定自述名。
ForeignKey、ManyToManyField 和 OneToOneField 都要求第一個參數是一個模型類,所以要使用verbose_name 關鍵字參數才能指定自述名:
poll = models.ForeignKey(Poll, verbose_name="the related poll")sites = models.ManyToManyField(Site, verbose_name="list of sites")place = models.OneToOneField(Place, verbose_name="related place")
習慣上,verbose_name 的首字母不用大寫。Django 在必要的時候會自動大寫首字母。
Django 建立model的一些注意事項