您现在的位置是:主页 > news > 北京企业网站建设公司/龙岗网站制作

北京企业网站建设公司/龙岗网站制作

admin2025/6/7 2:46:35news

简介北京企业网站建设公司,龙岗网站制作,大连哪里做网站,wordpress主题 v7前言之前一直在想页面上如果一个字段只有固定的几个选项,类似select下拉框这种,如果在表里面设置一个外键的话,是不是有点傻了,这样为了几个选项弄一张表不值得。后来看到Django模型中的字段有个choices属性,在设计模型…

北京企业网站建设公司,龙岗网站制作,大连哪里做网站,wordpress主题 v7前言之前一直在想页面上如果一个字段只有固定的几个选项,类似select下拉框这种,如果在表里面设置一个外键的话,是不是有点傻了,这样为了几个选项弄一张表不值得。后来看到Django模型中的字段有个choices属性,在设计模型…

前言

之前一直在想页面上如果一个字段只有固定的几个选项,类似select下拉框这种,如果在表里面设置一个外键的话,是不是有点傻了,这样为了几个选项弄一张表不值得。

后来看到Django模型中的字段有个choices属性,在设计模型的时候,只需把字段参数加个choices即可,看样子是我想多了~

choices参数

如果一个字段设置了choices属性,在模版中如果我要显示这个字段,比如用户的性别,只需设置2个参数选项。

在django模版系统就会将它默认解析为一个下拉菜单,这样对于一个静态的下拉菜单式很方便的。

**gender_choices参数定义一个元祖类型,里面有2个参数,一个是value值可以选择,如“M”,另外一个是显示的内容display_name,如“男”

# 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,同步数据

python manage.py makemigrations

python manage.py migrate

添加和查询数据

进入到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()这个函数即可。

   referrerpolicy=

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)

   referrerpolicy=