choices引數(資料庫欄位設計常見)
阿新 • • 發佈:2022-12-12
choices引數(資料庫欄位設計常見)
當資料可以被列舉完,能夠供使用者選擇的時候,能夠考慮用choices引數,好比性別,成績,學歷,婚否等等
#models.py from django.db import models # Create your models here. class User(models.Model): username = models.CharField(max_length=32) age = models.IntegerField() # 性別 gender_choices = ( (1, '男'), (2, '女'), (3, '其他'), ) gender = models.IntegerField(choices=gender_choices) """ 該gender欄位存的還是數字,但是如果存的數字在上面元組列舉的範圍之內, 那麼就可以獲取到數字對應的真正內容 1 gender如果欄位存的數字不在上述元組列舉的範圍內容 2 如果在,獲取對應的中文資訊 """ score_choices = ( ('A', '優秀'), ('B', '良好'), ('C', '及格'), ('D', '不合格'), ) # 保證欄位型別跟列舉出來的元組的第一個資料型別一致即可 score = models.CharField(max_length=32, choices=score_choices, null=True)
#tests.py from django.test import TestCase # Create your tests here. import os import sys def main(): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day08.settings') import django django.setup() from app01 import models #存 # models.User.objects.create(score='A', username='zhao', age=19, gender=1) # models.User.objects.create(score='B', username='xiaoyu', age=18, gender=2) # models.User.objects.create(score='C', username='張三', age=22, gender=3) """存的時候沒有列舉出來的數字也能存""" # models.User.objects.create(score='D', username='tony', age=50, gender=4) # 取 user_obj = models.User.objects.filter(pk=1).first() print(user_obj.gender) # 只要是choices引數欄位,如果想要獲取對應資訊,固定寫法,get_欄位名_display() print(user_obj.get_gender_display()) print(user_obj.get_score_display()) user_obj2 = models.User.objects.filter(pk=4).first() # 如果沒有對應關係,那麼欄位是什麼就展示什麼 print(user_obj2.score) print(user_obj2.get_gender_display()) print(user_obj2.get_score_display()) if __name__ == '__main__': main()