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模板




    
    学生信息


    
{% for filed in form %} {{ filed }} {% endfor %}

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、已有的表记录

django模型层字段选项-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

你可能感兴趣的:(#,模型层,django,python,后端)