django模型层字段选项-choice
·
我们在定义模型字段时,如果有字段的值是由我们提供给用户选择的,那么此时我们可以为字段 提供choice字段选项,
序列本身由正好两个项目的迭代项组成(例如 [(A,B),(A,B)...] ),所以我们可以用序列作为choice的选择。如下定义的模型类:
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=10, blank=True, null=True)
Gender = [
(0, 'man'),
(1, 'woman')
]
gender = models.SmallIntegerField(default=0, verbose_name='性别', choices=Gender)
性别字段使用了自定义的选择项,并且默认值为0,即为man
一、choice作用于modelform
1、定义student.html模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
<div>
<form action="" method="post">
{% for filed in form %}
<label for="{{ filed.id_for_label }}">{{ filed.name }}:</label>
{{ filed }}
{% endfor %}
</form>
</div>
</body>
</html>
2、定义StudentForm和StuentView
from django.shortcuts import render
from django import forms
from django.views import View
from modelapp.models import Student
# Create your views here.
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = '__all__'
class StudentView(View):
def get(self, request):
form = StudentForm()
return render(request, 'student.html', locals())
如图、该网页为通过modelForm表单渲染出来的,其中的gender选项,就是由我们自己提供的选项。

二、通过get_foo_display()方法获取choice字段当前值的索引名称
1、已有的表记录

2、get_foo_display()获取索引值
对于每一个设置了choice的字段,该模型对象将有一个get_foo_display()方法,其中FOO是字段的名称。该方法返回字段的“序列中索引”值。
import django
import sys
import os
# 获取当前项目的根路径
base_path = os.path.basename(os.path.basename(os.path.abspath(__file__)))
# 将当前项目的根路径添加到系统路径中
sys.path.insert(0, base_path)
# 配置当前项目的配置文件添加到环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'testdjango.settings')
# 读取环境变量中的配置文件
django.setup()
from modelapp.models import Student
stu = Student.objects.get(id=1)
print(stu.gender) # 1
print(stu.name) # python
print(stu.get_gender_display()) # woman
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)