带有 ChoiceField 的 Django Rest 框架

2023-11-27

我的用户模型中有一些字段是选择字段,我正在尝试找出如何最好地将其实现到 Django Rest Framework 中。

下面是一些简化的代码来展示我正在做的事情。

# models.py
class User(AbstractUser):
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)


# serializers.py 
class UserSerializer(serializers.ModelSerializer):
    gender = serializers.CharField(source='get_gender_display')

    class Meta:
        model = User


# viewsets.py
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

本质上,我想做的是让 get/post/put 方法使用选择字段的显示值而不是代码,类似于下面的 JSON。

{
  'username': 'newtestuser',
  'email': '[email protected]',
  'first_name': 'first',
  'last_name': 'last',
  'gender': 'Male'
  // instead of 'gender': 'M'
}

我该怎么做呢?上面的代码不起作用。在我有这样的东西用于 GET 之前,但对于 POST/PUT 却给了我错误。我正在寻找有关如何执行此操作的一般建议,这似乎很常见,但我找不到示例。要么是这样,要么我正在做一些非常错误的事情。


Django 提供了Model.get_FOO_display获取字段的“人类可读”值的方法:

class UserSerializer(serializers.ModelSerializer):
    gender = serializers.SerializerMethodField()

    class Meta:
        model = User

    def get_gender(self,obj):
        return obj.get_gender_display()

对于最新的 DRF (3.6.3) - 最简单的方法是:

gender = serializers.CharField(source='get_gender_display')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 ChoiceField 的 Django Rest 框架 的相关文章

随机推荐

  • Facebook 在某些设备上登录失败

    我已经实现了 Facebook 登录 并且在某些设备 AVD 上运行良好 我的开发设备是Gingerbread手机 但是用4 1 1设备测试它 它根本无法登录 按facebook按钮后 它显示空白屏幕 尝试连接Facebook 1 2秒后返
  • 如何在 xcode4 的界面生成器中设置视图的辅助功能标签?

    我希望使用KIF为我们的 iPhone 应用程序编写功能测试 它使用 辅助功能标签 来识别正在测试的 UI 项目 如何在 xcode4 的界面生成器中设置视图的辅助功能标签 要以编程方式设置变量 您可以像这样使用它的属性 UIButton
  • Gradle:使用项目类路径执行 Groovy 交互式 shell

    我有一个由多个子项目组成的 Gradle 项目 我刚刚创建了一个新的 shell 以添加对我想运行的交互式 Groovy shell 的支持 gradle console or gradle console run 所以我的新console
  • 如何在Python中处理字典的多个键?

    我一直在搜索如果发现重复的键如何为 Dict 中的单个键添加多个 val 让我们举个例子 list 1 4 6 8 8 list 2 a b c d new dict dict zip list 1 list 2 output 8 d 4
  • KeyboardWillShow 被调用两次

    我有一个带有键盘通知的视图 例如keyboardWillShow and keyboardWillHide 我使用的所有处理通知的代码均取自Apple的示例代码 键盘配件 当我第一次进入这个视图时 一切正常 但是当我从子视图返回到此视图时
  • 如何从 Razor 视图访问 My.Resources

    我有一个 razor vbhtml 视图 并且想使用通常通过 My Resources 访问的字符串资源 似乎我只能从视图中访问 My Computer My Log 和其他名称空间 但不能访问 My Resources 我尝试将访问修饰符
  • 具有重定向功能的 javascript windows 警报

    各位 我有以下代码 echo 我想要做的是 当我在 windows alert 上单击 确定 时 页面将重定向到我的 edit php 或者如何创建一个执行插入查询的 JavaScript Alert 会阻塞程序流程 因此您只需编写以下内容
  • IE/JS:减少对象

    我的 javascript 应用程序在 Firefox 和 Chrome 上运行得很好 但它在 Internet Explorer IE 8 上似乎被破坏了 我在控制台日志上没有收到错误消息 通过调试代码 我注意到应用程序在以下行中断 se
  • 从 List< 类型的列表显式转换有哪些风险?在 Java 中将 MyObject> 扩展为 List 类型的列表?

    我认为标题应该解释一切 但以防万一 我想知道以下 Java 代码片段可能会引起与转换相关的哪些风险和潜在问题 List
  • 如何使用 awk 忽略空白行和注释行

    我正在写这段代码 awk F arr 1 2 END for x in arr print x arr x 1 txt 2 txt 这段代码忽略空行 但我也想忽略以 开头的行 注释 知道如何添加多个图案吗 Change to or spac
  • Java 9、Hibernate 和 java.sql/javax.transaction

    我尝试将使用 Hibernate 的项目 升级 到 Java 9 但在使模块正常运行时遇到问题 我的相关部分module info java看起来像这样 module test requires java base requires hib
  • 使用 ggplot2 中矩阵的值创建热图

    我见过热图 其值是在各种 R 图形系统中制作的 包括晶格和基数 如下所示 我倾向于使用ggplot2有点 希望能够制作一个热图 并绘制相应的单元格值 这是热图和使用的尝试geom text library reshape2 ggplot2
  • 你能清除jquery ajax缓存吗?

    我想知道是否可以通过特定的 AJAX 方法清除缓存 假设我有这个 ajax url test html cache true success function html results append html 现在 99 的情况下 可以使用
  • 使用 kotlin + quarkus 注入某些依赖项时出错

    我想在我的 Kotlin 资源文件中包含依赖项 但我不能 我做了这个教程 https quarkus io guides rest client guide但是 为了启动该项目 我在项目中包含了扩展 kotlin 我的代码如下 国家 地区
  • 当同一用户 ID 尝试在多个设备上登录时,如何终止另一台设备上的会话?

    我想要做的是将用户 ID 限制为一次只能登录一台设备 例如 用户 ID abc 登录到他们的计算机 用户 ID abc 现在尝试通过手机登录 我想要发生的是终止他们计算机上的会话 Spotify 应用程序正是这样做的 Spotify 一次只
  • 如何使用 PRISM 和 MEF 将视图注入到 UI 中?

    我已经搜索了一些教程 甚至查看了pluralsite PRISM 简介 然而 大多数示例基于使用 Unity 容器 并且缺乏有关如何使用 Mef 容器实现此功能的信息 我的简单 helloworld 模块基于网络教程 我的代码是相同的 只是
  • 如何将文件从主机复制到Docker容器?

    我正在尝试为我们使用的 Docker 容器构建备份和恢复解决方案 我有我创建的 Docker 基础镜像 ubuntu base 并且不希望每次都使用 Docker 文件重建它来向其中添加文件 我想创建一个从主机运行的脚本并使用以下命令创建一
  • 如何解决父pom依赖问题:无法读取工件描述符;找不到神器?

    我最近向 Maven Central 发布了三个工件 https search maven org search q ced2ar3 rdb 这三者是其中的一部分同一个项目并同时出版 我现在正在尝试使用 ced2ar rdb 和 ced2a
  • 当我尝试在 EF 4.3.1 中启用迁移时引发异常

    我在 Net 4 0 类库项目中使用 nuget 安装的实体框架 4 3 1 在这种情况下 当我在 PM 控制台中调用 Enable Migrations 命令时 我收到以下异常 使用 1 个参数调用 LoadFrom 时出现异常 Nelz
  • 带有 ChoiceField 的 Django Rest 框架

    我的用户模型中有一些字段是选择字段 我正在尝试找出如何最好地将其实现到 Django Rest Framework 中 下面是一些简化的代码来展示我正在做的事情 models py class User AbstractUser GENDE