choices引數 資料庫字段設計常見

2022-10-09 12:33:08 字數 1449 閱讀 1922

"""

使用者表

性別 學歷

工作經驗

是否結婚

是否生子

客戶**

...針對某個可以列舉完全的可能性字段,我們應該如何儲存

只要某個欄位的可能性是可以列舉完全的,那麼一般情況下都會採用choices引數

"""class user(models.model):

username = models.charfield(max_length=32)

age = models.integerfield()

# 性別

gender_choices = (

(1,'男'),

(2,'女'),

(3,'其他'),

)gender = models.integerfield(choices=gender_choices)

score_choices = (

('a','優秀'),

('b','良好'),

('c','及格'),

('d','不合格'),

)# 保證字段型別跟列舉出來的元祖第乙個資料型別一致即可

score = models.charfield(choices=score_choices,null=true)

"""該gender欄位存的還是數字 但是如果存的數字在上面元祖列舉的範圍之內

那麼可以非常輕鬆的獲取到數字對應的真正的內容

1.gender欄位存的數字不在上述元祖列舉的範圍內容

2.如果在 如何獲取對應的中文資訊

"""# models.user.objects.create(username='jason',age=18,gender=1)

# models.user.objects.create(username='egon',age=85,gender=2)

# models.user.objects.create(username='tank',age=40,gender=3)

# 存的時候 沒有列舉出來的數字也能存(範圍還是按照字段型別決定)

# models.user.objects.create(username='tony',age=45,gender=4)

# 取# user_obj = models.user.objects.filter(pk=1).first()

# print(user_obj.gender)

# 只要是choices引數的字段 如果你想要獲取對應資訊 固定寫法 get_欄位名_display()

# print(user_obj.get_gender_display())

user_obj = models.user.objects.filter(pk=4).first()

# 如果沒有對應關係 那麼欄位是什麼還是展示什麼

print(user_obj.get_gender_display()) # 4

資料庫字段

mysql char size 字長字元,0 255位元組 varchar size 變長字元,0 255位元組 date 日期資料,格式為yyyy mm dd hh mm ss datetime 日期資料,比date更確切,包含分秒 int整形資料 double s,p 數字型,可存放實型和整形,...

ORM相關字段,引數及資料庫遷移

1.charfield,integerfield,autofield,emailfield,textfield textarea booleanfield checkbox datetimefield 類似datefield 2.floatfield 引數 max digits 總位數 不包括小數點...

資料庫修改字段

一 更改字段型別長度 a mysql alter table 表名 change 原欄位名 新欄位名 字段型別 b oracle alter table 表名 rename column 原欄位名 to 新欄位名 二 更改字段型別 alter table 表名 alter column 欄位名 更改...