串行器中的选择字段 – Django REST框架

串行器中的选择字段 – Django REST框架

Django REST框架中,序列化的概念是将数据库数据转换为可被javascript使用的数据类型。每个序列化器都有一些将要被处理的字段(条目)。例如,如果你有一个名为Employee的类,其字段为Employee_id, Employee_name, is_admin等。那么,你就需要AutoField、CharField和BooleanField来通过Django存储和操作数据。同样的,序列化器也是以同样的原理工作的,它的字段是用来创建一个序列化器。
本文围绕Django REST框架中序列化器的选择字段展开。有两个主要字段–Choice和MultipleChioceField。

ChoiceField

ChoiceField基本上是一个CharField,它根据有限的选择集中的一个值来验证输入。这个字段与ChoiceField – Django Forms相同。
它有以下参数 –

  • choices – 一个有效值的列表,或者一个(key, display_name)图元的列表。
  • allow_blank – 如果设置为True,那么空字符串应该被认为是一个有效值。如果设置为False,那么空字符串被认为是无效的,并将引发一个验证错误。默认为False。
  • html_cutoff – 如果设置,这将是一个HTML选择下拉菜单显示的最大选择数。可以用来确保自动生成的ChoiceFields具有非常大的可能的选择,不会妨碍模板的渲染。默认为无。
  • html_cutoff_text – 如果设置了这个,在HTML选择下拉菜单中,如果项目的最大数量已经被切断,将显示一个文本指示。默认为 “超过{count}项…”。

语法 –

field_name = serializers.ChoiceField(*args, **kwargs)
Python

MultipleChoiceField

ChoiceField基本上是一个CharField,它根据一组从有限的选择中选出的0、1或多个值来验证输入。这个字段与MultipleChoiceField – Django Forms .NET相同。
语法 –

field_name = serializers.MultipleChoiceField(*args, **kwargs)
Python

如何在序列化程序中使用选择字段

为了解释选择字段的用法,让我们使用 “如何使用Django Rest框架创建基本的API “中的相同项目设置。
现在你的项目中有一个叫做序列化器的文件,让我们创建一个以ChoiceField和MultipleChoiceField为字段的序列化器。

# import serializer from rest_framework
from rest_framework import serializers
  
class Geeks(object):
    def __init__(self, choices, multiplechoices):
        self.choices = choices
        self.multiplechoices = multiplechoices
  
# create a tuple
GEEKS_CHOICES =( 
    ("1", "One"), 
    ("2", "Two"), 
    ("3", "Three"), 
    ("4", "Four"), 
    ("5", "Five"), 
)
  
# create a serializer
class GeeksSerializer(serializers.Serializer):
    # initialize fields
    choices = serializers.ChoiceField(
                        choices = GEEKS_CHOICES)
    multiplechoices = serializers.MultipleChoiceField(
                        choices = GEEKS_CHOICES)
Python

现在让我们创建一些对象,并尝试将它们序列化,检查它们是否真的能工作,运行,-

Python manage.py shell
Python

现在,在shell中运行以下python命令

# import everything from serializers
>>> from apis.serializers import *

# create a object of type Geeks
>>> obj = Geeks("One", ["One", "Two"])

# serialize the object
>>> serializer = GeeksSerializer(obj)

# print serialized data
>>> serializer.data
{'choices': 'One', 'multiplechoices': {'Two', 'One'}}
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册