python测试开发django-40.模型(model)中choices使用

前言

以前一直在想页面上若是一个字段只有固定的几个选项,相似select下拉框这种,若是在表里面设置一个外键的话,是否是有点傻了,这样为了几个选项弄一张表不值得。
后来看到Django模型中的字段有个choices属性,在设计模型的时候,只需把字段参数加个choices便可,看样子是我想多了~python

choices参数

若是一个字段设置了choices属性,在模版中若是我要显示这个字段,好比用户的性别,只需设置2个参数选项。
在django模版系统就会将它默认解析为一个下拉菜单,这样对于一个静态的下拉菜单式很方便的。
**gender_choices参数定义一个元祖类型,里面有2个参数,一个是value值能够选择,如“M”,另一个是显示的内容display_name,如“男”shell

# models.py from django.db import models # Create your models here. class Student(models.Model): '''学生表''' student_id = models.CharField(max_length=30, verbose_name="学号", default="") name = models.CharField(max_length=30, verbose_name="姓名", default="") gender_choices = ( (u'M', u'男'), (u'F', u'女'), ) gender = models.CharField(max_length=10, choices=gender_choices, # 设置性别选项 verbose_name="性别", default="") age = models.IntegerField(verbose_name="年龄", default="") class Meta: verbose_name = "学生" verbose_name_plural = verbose_name def __str__(self): return self.name

以后执行 makemigrations 和migrate,同步数据django

python manage.py makemigrations
python manage.py migrateruby

添加和查询数据

进入到django的项目目录,使用shell模式添加数据,choices字段能够直接添加value参数“M”函数

>python manage.py shell

>>> from hello.models import Student >>> st=Student.objects.create(student_id='22001100',name='赵敏',gender='F',age=22) >>> st.save() >>> st.gender 'F' >>> st.get_gender_display() '女' >>>

gender字段中保存了两个信息,一个为value,一个display_name,取value时直接用st.gender便可,若是要取display_name用st.get_gender_display()这个函数便可。
spa

xadmin展现

在xadmin.py注册表信息,打开后台详情页面就能够看到下拉选项了设计

# adminx.py import xadmin from .models import Student  class DisplayStudent(object): # 显示的字段 list_display = ('student_id', 'name', 'age',) xadmin.site.register(Student, DisplayStudent)

相关文章
相关标签/搜索