django 获取字段选项 choice 的值
django 获取 选项 choice
2023-06-13 09:18:39 时间
由二项元组构成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。
这是一个关于 choices 列表的例子:
YEAR_IN_SCHOOL_CHOICES = (
('FR', 'Freshman'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
('GR', 'Graduate'),
)
每个元组中的第一个元素,是存储在数据库中的值;第二个元素是在管理界面或 ModelChoiceField 中用作显示的内容。 在一个给定的 model 类的实例中,想得到某个 choices 字段的显示值,就调用 get_FOO_display 方法(这里的 FOO 就是 choices 字段的名称 )。例如:
from django.db import models
class Person(models.Model):
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
>>> p = Person(name="Fred Flintstone", shirt_size="L")
>>> p.save()
>>> p.shirt_size
'L'
>>> p.get_shirt_size_display()
'Large'
文档出处:http://doc.codingdict.com/django/topics/db/models.html
源码位置:Lib\site-packages\django\db\models\base.py
源码方法:
class Model(six.with_metaclass(ModelBase)):
# ....
def _get_FIELD_display(self, field):
value = getattr(self, field.attname)
return force_text(dict(field.flatchoices).get(value, value), strings_only=True)
模板里获取 choice 显示的值:
{{ get_shirt_size_display }}
view 里获取 choice 显示的值:
class UserProfile(AbstractUser):
"""
用户
"""
gender_choice = (
("0", "女"),
("1", "男"),
)
email = models.EmailField(verbose_name='邮箱', max_length=255, unique=True)
phone = models.CharField(verbose_name="手机号码", max_length=50, unique=True, null=True, blank=True)
avatar = models.URLField(verbose_name="用户头像", default="http://photo.python3.top/avatar_default.png")
gender = models.CharField(max_length=32, choices=gender_choice, default="1", verbose_name="性别")
def get_users(request):
result = []
values_list = ['username', 'gender']
for p in User.objects.all().values_list(*values_list):
print(p)
choice = {k: v for k, v in User.gender_choice}[p[-1]]
print(choice)
# result.append(list(p[:-1]) + [choice])
result.append({values_list[0]: p[0], values_list[1]: choice})
res = {"users": result}
print(res)
return JsonResponse(res)
[13/May/2020 16:11:22 - 192.168.91.116] "GET / HTTP/1.1" 404 3447
[13/May/2020 16:11:26 - 192.168.91.116] "GET /favicon.ico HTTP/1.1" 301 0
[13/May/2020 16:11:26 - 192.168.91.116] "GET /static/images/favicon.ico HTTP/1.1" 200 1150
('yinzhuoqun', '1')
男
('demo', '1')
男
{'users': [{'username': 'yinzhuoqun', 'gender': '男'}, {'username': 'demo', 'gender': '男'}]}
[13/May/2020 16:11:35 - 192.168.91.116] "GET /bus/get_users HTTP/1.1" 200 101
相关文章
- 使用python的Django库开发一个简单的数据可视化网站(一)- 基本环境安装及配置
- Django的HttpRequest[通俗易懂]
- Django(37)配置django日志[通俗易懂]
- django官方入门教程_DJango
- Django菜鸟教程学习记录(一)
- django菜鸟教程用pycharm_runoob菜鸟教程官网
- Django 发送注册激活邮箱
- 使用 centerOS 7 部署 django 项目 python3.7.3
- Django框架开发001期 Python+Django开发教程,开启你的第一个django网站应用
- Django+Celery学习笔记4——django+celery+redis周期任务Crontabs设置
- django request 获取请求的 IP 地址
- Django MemCache 缓存使用方法和源码
- How to access the HttpRequest object in Django forms( Django view 给 forms 传递数据)
- python-Django 模型层-模型层示例
- Django REST Framework-自定义序列化器
- Django REST Framework-什么是视图(一)
- django导出excel详解编程语言
- Django Rest Framework源码剖析(一)—–认证详解编程语言
- django 获取当前访问的URL详解编程语言
- DRF (Django REST framework) 中的视图扩展类详解编程语言
- django 获取当前筛选条件下的queryset,获取serializer之后的数据详解编程语言
- django的视图函数介绍详解编程语言
- 学习如何使用Django连接MySQL数据库(django连接mysql)