Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)
Django中的模型類的定義以及模型類字段屬性和選項
1.模型類的定義
2.模型類屬性命名限制??
2.1字段類型和屬性
2.2選項
1.模型類的定義
2.模型類屬性命名限制??
1)不能是python的保留關鍵字。
2)不允許使用連續的下劃線,這是由django的查詢方式決定的。
3)定義屬性時需要指定字段類型,通過字段類型的參數指定選項,語法如下:
? ? ?屬性名=models.字段類型(選項)
2.1字段類型和屬性
使用時需要引入django.db.models包,字段類型如下:
| 類型 | 描述 |
| AutoField | 自動增長的IntegerField,通常不用指定,不指定時Django會自動創建屬性名為id的自動增長屬性。 |
| BooleanField | 布爾字段,值為True或False。 |
| NullBooleanField | 支持Null、True、False三種值。 |
| CharField(max_length=最大長度) | 字符串。參數max_length表示最大字符個數。 |
| TextField | 大文本字段,一般超過4000個字符時使用。 |
| IntegerField | 整數 |
| DecimalField(max_digits=None, decimal_places=None) | 十進制浮點數。參數max_digits表示總位數。參數decimal_places表示小數位數。 |
| FloatField | 浮點數。參數同上(沒有DeciamlField精確) |
| DateField:([auto_now=False, auto_now_add=False]) | 日期。 1)參數auto_now表示每次保存對象時,自動設置該字段為當前時間,用于"最后一次修改"的時間戳,它總是使用當前日期,默認為false。 2) 參數auto_now_add表示當對象第一次被創建時自動設置當前時間,用于創建的時間戳,它總是使用當前日期,默認為false。 3)參數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。 |
| TimeField | 時間,參數同DateField。 |
| DateTimeField | 日期時間,參數同DateField。 |
| FileField | 上傳文件字段。 |
| ImageField | 繼承于FileField,對上傳的內容進行校驗,確保是有效的圖片。 |
有的字段比如,性別這個屬性只能男或女,可以使用 SmallIntergerField字段.
class UserInfo(models.Model):# 有序字典GENDER_CHOICES = ((0, "male"),(1, "female"))gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name="性別")?
2.2選項
通過選項實現對字段的約束,選項如下:
| 選項名 | 描述 |
| default | 默認值。設置默認值。 |
| primary_key | 若為True,則該字段會成為模型的主鍵字段,默認值是False,一般作為AutoField的選項使用。 |
| unique | 如果為True, 這個字段在表中必須有唯一值,默認值是False。 |
| db_index | 若值為True, 則在表中會為此字段創建索引,默認值是False。 |
| db_column | 字段的名稱,如果未指定,則使用屬性的名稱。如果指定了,則生成表的時候,字段名就是設置的名字 |
| null | 如果為True,表示允許為空,默認值是False。 |
| blank | 如果為True,則該字段允許為空白,默認值是False。 |
?
對比:null是數據庫范疇的概念,blank是后臺管理頁面表單驗證范疇的。
經驗:
當修改模型類之后,如果添加的選項不影響表的結構,則不需要重新做遷移,商品的選項中default和blank不影響表結構。
總結
以上是生活随笔為你收集整理的Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(K-means聚类原理以及用法
- 下一篇: Django框架(11.Django中的