首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DRF序列化程序不显示默认HTML表单页API中的字段(外键和many2many)。字段在GET中可用

DRF(Django REST Framework)是一个用于构建Web API的强大框架,它提供了许多功能和工具来简化API的开发过程。在使用DRF的序列化程序时,有时候我们可能会遇到一些字段在默认的HTML表单页API中不显示的情况,特别是外键和多对多字段。下面是对这个问题的完善且全面的答案:

问题描述: DRF序列化程序不显示默认HTML表单页API中的字段(外键和many2many)。字段在GET中可用。

解决方案:

  1. 外键字段: 外键字段在默认的HTML表单页API中不会显示,因为它们通常表示为关联模型的主键。为了在HTML表单页API中显示外键字段,可以使用DRF的嵌套序列化程序或自定义序列化程序。嵌套序列化程序允许将关联模型的详细信息嵌套在主模型的序列化数据中。例如,如果有一个Book模型和一个Author模型,可以使用嵌套序列化程序将Author模型的信息嵌套在Book模型的序列化数据中。

示例代码:

代码语言:txt
复制
from rest_framework import serializers

class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = '__all__'

class BookSerializer(serializers.ModelSerializer):
    author = AuthorSerializer()

    class Meta:
        model = Book
        fields = '__all__'
  1. 多对多字段: 多对多字段在默认的HTML表单页API中也不会显示,因为它们通常表示为关联模型的列表。为了在HTML表单页API中显示多对多字段,可以使用DRF的嵌套序列化程序或自定义序列化程序。嵌套序列化程序允许将关联模型的详细信息嵌套在主模型的序列化数据中。例如,如果有一个Book模型和一个Category模型,可以使用嵌套序列化程序将Category模型的信息嵌套在Book模型的序列化数据中。

示例代码:

代码语言:txt
复制
from rest_framework import serializers

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = '__all__'

class BookSerializer(serializers.ModelSerializer):
    categories = CategorySerializer(many=True)

    class Meta:
        model = Book
        fields = '__all__'

这样,在HTML表单页API中,外键字段和多对多字段将会显示它们的详细信息。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供可扩展的计算能力,支持多种操作系统和应用场景。详情请参考:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、音视频、文档等各种类型的数据存储。详情请参考:腾讯云对象存储
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。详情请参考:腾讯云人工智能
  • 腾讯云区块链服务(BCS):提供安全、高效、易用的区块链解决方案,适用于金融、供应链、溯源等领域的应用开发。详情请参考:腾讯云区块链服务

以上是对于DRF序列化程序不显示默认HTML表单页API中的字段(外键和多对多字段)的完善且全面的答案。希望能对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

重点内容回顾-DRF

重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外一个选项。 on_delete选项指明是主表删除数据时候,对于引用表数据如何处理。...django.db.models包含了可选常量,常用有三种: a.CASCADE级联,删除主表数据时候,连同删除外数据。这个就有点狠了,按需求慎用。...c.SET_NULL设置为 NULL,代表是主表删除数据时候,将关联表数据设置为NULL。仅仅在该字段null=True,允许为null时可用。...2. related_name related_name是定义模型类时,一个选项。它功能下面慢慢给大家分析一下。...Response类对象:传入原始响应数据,会自动根据客户请求头中 Accept将响应数据转换为对应格式进行返回,默认是json,仅支持jsonhtml 3.异常处理:如果视图中抛出了未处理异常

2.4K20

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表过滤

modelserializer实现商品序列化 3.GenericView方式实现商品列表分页 4.viewsetsrouter实现商品列表 5.各种View分析 三、DRF使用 1.DRF...一、普通方式实现商品列表 先了解Django实现Json数据传递基本方法,可以查看中文文档https://www.cntofu.com/book/35/index.html,并结合英文文档了解其用法...但是从代码可以看到: 通过新建列表、其元素为单个商品信息组成字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...使用REST框架一些原因: 该网站可浏览API是你开发人员一个巨大可用性胜利; 身份验证策略,包括OAuth1aOAuth2软件包; 支持ORM非ORM数据源序列化; 完全可自定义...Django中有Form,也有ModelForm,DRF也有ModelSerializer,相比于Serializer,它省去了模型所有字段添加处理数据方法实现,serializers.py简化如下

5.3K20

django restframework serializer 增加自定义字段操作

使用django restframework serializer 序列化django定义model时,有时候我们需要额外在serializer增加一些model没有的字段。...假设现在有一个Animal模型,其中有name, type, country字段,country为。我们序列化Animal时,需要额外增加countryarea信息。...它通过调用它所连接序列化方法来获得它值。它可用于将任何类型数据添加到对象序列化表示。...如果包含,则默认get_<field_name . 由 method_name 参数引用序列化方法应该接受一个参数(除了 self),这是要序列化对象。...:我们提交表单数据存在于多表(因为表中含有多对多字段),如何验证所有字段,并保存完整数据到各表

3.4K40

五、商品列表

5.1.djangoview实现商品列表 (1)goods/view_base.py goods文件夹下面新建view_base.py,为了区分djangodjango rest framework...,images保存是一个相对路径,我们还需要补全路径,而这些drf都可以帮助我们做到 以上写了这么多只是为了引入django rest framework简单介绍django序列化用法,下面就是重点讲解...Modelserializer实现商品列表 上面是用Serializer实现,需要自己手动添加字段,如果用Modelserializer,会更加方便,直接用__all__就可以全部序列化 # goods...id,Serialzer还可以嵌套使用,覆盖字段 # goods/serializers.py from rest_framework import serializers from .models...class GoodsSerializer(serializers.ModelSerializer): #覆盖字段 category = CategorySerializer()

4.7K00

Django REST framework+Vue 打造生鲜超市(四)

五、商品列表 5.1.djangoview实现商品列表 (1)goods/view_base.py goods文件夹下面新建view_base.py,为了区分djangodjango rest...5.4.drfModelserializer实现商品列表 上面是用Serializer实现,需要自己手动添加字段,如果用Modelserializer,会更加方便,直接用__all__就可以全部序列化...category只显示分类id,Serialzer还可以嵌套使用,覆盖字段 # goods/serializers.py from rest_framework import serializers...5.7.viewsetsrouter完成商品列表 主要用到viewsetsGenericViewSet ?...如果继承ListModelMixin的话,就无法将get商品列表关联起来,另外还有其中分页等等,都无法实现。

4.8K90

Django&DRF重点内容大盘点

大家可以了解了Django框架DRF框架之后再来看这篇文章。否则会有点不知所云。...2)返回时候用到了 HttpResponse这一命令返回响应对象 1.3.2url地址配置 1.子应用urls.py文件设置当前子应用url地址视图对应关系 urlpatterns =..., verbose_name='图书') # cascade是级联,删除主表数据时连同数据一起删除 1.12.3迁移生成表 1)生成迁移文件 python manage.py makemigrations...(label='图书') 注意:对象关联对象如果有多个,序列化定义嵌套序列化字段时,需要添加many=True。...]) 注意:此处 about_django为我们自定义校验函数 2)序列化器类定义特定方法 validate_针对特定字段进行补充验证 def validate_btitle

5.9K20

经历了源码痛苦,掌握DRF核心序列化

序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:序列化类(serializers.py)写 方法二:表模型(models.py)写 反序列化序列化demo 反序列化之局部全局钩子...ModelSerializer模型类序列化字段参数 DRF核心--序列化器 上一篇介绍了很多有关视图类以及DRFAPIView执行流程、Request对象源码分析,源码都get了;...demo app中新建serializer.py,自定义类,继承DRF框架Serializer及其子类 写要序列化字段序列化哪些就写哪些,序列化写) 使用序列化类,视图类中用,得到序列化类对象...用于HTML展示API页面时,显示字段名称 help_text 用于HTML展示API页面时,显示字段帮助提示信息 总结: # 重点记忆: read_only:表示该字段仅用于序列化输出...自增传也可以 # 自定制字段传必须注册,列表 fields = ['id', 'title', 'price', 'price_info'] # 指定字段

78510

django rest framework serializers解读

serializers.fieild 我们知道django,form也有许多field,那serializers其实也是drf中发挥着这样功能。我们先简单了解常用几个field。...,我们django,form更强调对提交表单进行一种验证,而serializerfield不仅在进行数据验证时起着至关重要作用,将数据进行序列化后返回也发挥着重要作用!...,如 label=’验证码’ help_text: 指定字段增加一些提示文字,这两个字段作用于api页面比较有用 style: 说明字段类型,这样看可能比较抽象,看下面例子: # api页面,...,我觉得用很好,一眼看出,这是为postpatch所设置,没错,这一部分功能是专门为这两种请求所设计,如果只是简单get请求,那么设置了前面的field可能就能够满足这个需求。...首先,课程coursemodel,需要在外设置related_name class Course(model.Model): category = models.ForeignKey(

1.7K10

drf框架serializersModelSerializer类简化序列化序列化操作

): class Meta: model=对应模型 fields=('参与序列化反序列字段1','参与序列化反序列字段2') #fields...='__all__' 为所有字段 # exclude = ('id', 'is_delete') # 刨除某些字段 # depth = 1 # 跨表自动深度(展示所有字段...) 注意点 其中fields与exclude不能共存 depth不能控制显示字段,与相关表会全部显示出来 二.利用模型类方法进行指导字典生成 例如有两个模型A与B,他们c字段关联 modles.py...fields=('参与序列化反序列字段1','参与序列化反序列字段2') extra_kwargs ={ 参与序列化反序列字段1:{...fields=('参与序列化反序列字段1','参与序列化反序列字段2') extra_kwargs ={ 参与序列化反序列字段1:{

1.4K20

Django Swagger文档库drf-spectacular

使用DRF时候,通常文档有:默认文档RestFrameWork、CoreAPI、Swagger,Swagger是最流行API文档库,绝大多数服务端开发中都有用到,之前我们使用了CoreAPI来生成文档...methods:检查extend_schema特殊方法,默认匹配所有 versions:检查extend_schema特殊API版本,默认匹配所有 example:将请求/响应示例附加到操作...DEFAULT_AUTHENTICATION_CLASSES配置认证路径,然后重新get_security_definition函数,返回一个字典对象,字典可以OpenAPI Specification...,因此页面就会显示两种认证方式 BUG 目前使用存在一个BUG,就是对于read_only字段,按照我们理解就是查询请求是返回给客户端,而创建时在请求体不需要包含。...默认生成swagger界面上,我们看到情况与理解一样,对于JSON参数请求是没有问题,我们只需要输入必填字段就可以了,但是如果是form-data参数,虽然显示依然包含read_only

1.7K20

第 16 篇:别再手动管理接口文档了

可以看到内容大体上是正确,接口基本上都罗列了出来,但是仔细检查各个接口内容,就会发现一些问题: GET /api-version/test/ 这个接口是我们用来测试希望它显示文档里。...其中 toc body_html 因为不是 Post 定义字段,所以 drf-yasg 无法知道关于这两个字段说明。 drf-yasg 是如何知道这个接口会返回哪些响应参数呢?...原理是 drf-yasg 会尝试去解析接口对应序列化器(Serializer),从序列化器中提取出对应请求和响应字段(如果序列化找不到,它会进一步去序列化器关联模型找),因此我们就可以给序列化定义字段添加说明信息...) 这样两个字段含义就非常清晰了,效果如下: 其它一些没有说明信息字段都可以根据这种方式来添加,只需要找到文档参数代码对应来源字段就可以了。...responses 参数值是一个字典,字典是 HTTP 响应码,值可以是一个序列化器,这样 drf-yasg 会拿这个序列化器去解析接口响应参数;也可以是一个字符串,drf-yasg 会把字符串直接当做接口响应结果写入文档

1.8K20

美多商城项目(五)

,与配置文件 CACHES对应。...对于没有的字段provinceid、cityiddistrict_id,我们需要自己定义。 有些字段序列化时使用,有些字段是反序列化时使用,因此我们需要对这些字段通过参数进行设置。...因为我们序列化时需要是省市县名称,所以我们嵌套序列化时候使用StringRelatedField方法。系统自动生成时候,默认序列化为主键,我们需要对其进行更改。...除了instancedata参数构造Serializer对象时,还可通过context参数额外添加数据,如 serializer = AccountSerializer(account, context...总结回顾 1.视图集对象action属性使用场景 重写getserializerclassget_queryset,根据不同action操作,返回不同序列化不同查询集。

1.2K30

Django序列化简单使用

默认False write_only 表明该字段仅用于反序列化输入,默认False required 表明该字段序列化时必须输入,默认True default 反序列化时使用默认值 allow_null...表明该字段是否允许传入None,默认False validators 该字段使用验证器 error_messages 包含错误编号与错误信息字典 label 用于HTML展示API页面时,显示字段名称...help_text 用于HTML展示API页面时,显示字段帮助提示信息 2、创建Serializer对象 定义好序列化器类之后,我们就可以创建序列化对象了。...data参数 除了instancedata参数构造Serializer对象时,还可通过context参数额外添加数据,如除了instancedata参数构造Serializer对象时,还可通过...序列化字段声明类似于我们前面使用过表单系统。 开发restful api时,序列化器会帮我们把模型数据转换成字典。

1.5K40

DRF框架学习(二)

2.明确RestAPI接口实现时主要工作 2.1序列化&反序列化程序数据结构类型转换为其他格式数据,这个过程叫做序列化过程 例:将模型类对象转换为字典或者json数据过程,就叫做序列化过程...把其他格式数据转换为程序数据结构类型,这个过程叫做反序列化过程。 例:将前端传递数据保存到模型对象过程,叫做反序列化过程。....字段类型(选项参数) 4.2通用选项参数 参数名称 解释 required 默认为True,意思是这个字段序列化时必须输入 read_only、write_only 默认是False,如果是仅用于反序列化输出时使用...default 我们使用序列化序列化时使用默认值 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,web直观显示时候有一个显示信息...,将要被反序列化数据传入data参数 3)除了instancedata参数构造Serializer对象时,还可通过context参数额外添加数据,如 serializer = AccountSerializer

4.1K30

Vue+Django2.0 REST framework 打造前后端分离生鲜电商项目(五)商品列表

一、Django2.0view实现商品列表 算是对以前django知识一个回顾,方便跟下面的drf(Django REST framework)实现商品列表作对比 1.apps/goods下新建...4 django-crispy-forms - 改进了用于过滤HTML显示。 5 django-guardian(1.1.1+) - 对象级权限支持。...写views apps/goods下新建serializer.py文件(drfserializer.py等同于djangoforms.py) 1 from rest_framework import...name字段(昵称),而drf是AbstractUserusername字段(用户名),没找到所以报错 解决方法:将UserProfile表__str__方法改成返回username: 1...def __str__(self): 2 return self.username 三、drf实现商品列表功能 1.ModelSerializer(相当于djangomodelform

4.8K61

Go结构体标签

(JSON标签)、 orm(Beego标签)、gorm(GORM标签)、bson(MongoDB标签)、form(表单标签)、binding(表单验证标签).这些系统使用标签设定字段处理时应该具备特殊属性可能发生行为...无写入权限、设置字段权限,->:false 无读权限-忽略该字段,- 无读写权限comment迁移时为字段添加注释关联标签GORM 允许通过标签为关联配置、约束、many2many...表:标签名说明foreignKey指定当前模型列作为连接表references指定引用表列名,其将被映射为连接表polymorphic指定多态类型,比如模型名polymorphicValue...指定多态值、默认表名many2many指定连接表表名joinForeignKey指定连接表列名,其将被映射到当前表joinReferences指定连接表列名,其将被映射到引用表constraint...关系约束,例如:OnUpdate、OnDeleteform标签Gin中提供了模型绑定,将表单数据模型进行绑定,方便参数校验使用。

1.1K31

DRF框架英文单词

DRF框架英文单词 1. prefix/'prifɪks/前缀,我们路由配置时候经常看见这个单词。flask,我们可以设置url时候为了区别视图,类似功能url全部加一个前缀。...2. version/'vɝʒn/版本,这个计算机上面很常见,DRF框架RESTful设计风格中有一种规范,就是将api版本号放入url,如下:(1.0即版本号) http://www.example.com...,默认False write_only 表明该字段仅用于反序列化输入,默认False required 表明该字段序列化时必须输入,默认True default 序列化序列化时使用默认值 allow_null...表明该字段是否允许传入None,默认False validators 该字段使用验证器 error_messages 包含错误编号与错误信息字典 label 用于HTML展示API页面时,显示字段名称...help_text 用于HTML展示API页面时,显示字段帮助提示信息 24. instance/'ɪnstəns/实例,我们下面的这种情况下用到了: Serializer(instance=None

1.7K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券