【问题标题】:How to use different key name in MongoDB while working with Django?使用 Django 时如何在 MongoDB 中使用不同的键名?
【发布时间】:2022-01-19 16:08:58
【问题描述】:

我正在使用 Django 开发一个微服务,我使用 MongoDB 作为后端。

编写主要代码的人使用 java,因此 MongoDB 集合中已经存在的数据遵循驼峰模式,例如firstName 是键名。

现在在使用 python 时,我喜欢使用像 first_name 和 get_first_name() 这样的蛇形外壳来命名我的变量和函数。

我想要的是在代码中,我想在任何地方都将名字称为 first_name,但是在保存/更新 DB 中的名字以及返回用户数据的 JSON 响应时,我想将其作为名字返回?

有没有办法实现这种行为?请帮帮我?

【问题讨论】:

    标签: python django mongodb django-rest-framework naming-conventions


    【解决方案1】:

    使用db_column 作为模型字段构造函数中的参数,如下所述: https://docs.djangoproject.com/en/4.0/ref/models/fields/#db-column

    编辑:关于 API 输出,您有两种可能性,使用串行器或 .values() 函数。

    带有 django-restframework 的序列化器:

    from rest_framework import serializers
    
    class CommentSerializer(serializers.Serializer):
        email = serializers.EmailField()
        content = serializers.CharField(max_length=200)
        created = serializers.DateTimeField()
    
    serializer = CommentSerializer(comment)
    serializer.data
    # {'email': 'leila@example.com', 'content': 'foo bar', 'created': '2016-01-27T15:17:10.375877'}
    

    https://www.django-rest-framework.org/api-guide/serializers/

    .values(): Blog.objects.values('id', 'name') 其中参数定义输出键值,https://docs.djangoproject.com/en/4.0/ref/models/querysets/#values

    【讨论】:

    • 感谢您的回答。但是我应该如何解决问题的另一部分。因为在序列化程序中我将变量称为 first_name,django 将以相同的方式返回它。从 API 返回响应时,有什么方法可以将其更改为 firstName?
    • 那么你的api输出应该又是camelCase了吧?
    • 是的,API的输出应该是驼峰式的。
    • 简而言之,在 python 代码中,它应该像 first_name 一样使用蛇形大小写,但在 DB 内部(这部分已解决),在 API 的输出中,它应该像 firstName 一样使用驼峰大小写
    • 好的,现在我明白了,有两种可能性,我将把它们包括在我的答案中
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2017-04-07
    • 2017-03-12
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多