python - 如何修改模型字段,然后使用 Python/Django 中的 Rest Framework 发送它?

标签 python django django-models django-rest-framework

您好,我需要在其余框架将数据发送到客户端之前修改一些数据。发送的数据来自模型对象。

这是我的模型的代码示例。

class UserOptions(models.Model):
    options = models.TextField(null=False, null=True)

现在,当客户端请求特定用户选项时,我需要通过将 2-3 个其他模型的元素组合添加到一个大 JSON 字符串中来修改选项。我怎样才能做到这一点,我假设通过序列化器,但我不确定如何相应地具体修改请求的字段。

最佳答案

如果您希望仅返回此数据,可以通过使用自定义 SerializerMethodField 来完成这将允许您聚合所需的所有数据,然后将其传递回 API 响应。

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

    def get_options(self, obj):
        return {
            "something": obj.something,
        }

另一个选项是覆盖 to_native (DRF 2) / to_representation (DRF 3) ,但这一切都取决于您需要修改数据的位置以及修改频率。

无论哪种情况,您都应该watch out for N+1 queries这将不可避免地涉及跨外键处理数据。

<小时/>

如果您希望自动保存此自定义数据,可以通过覆盖 the perform_create and perform_update hooks 来实现。在 View 上。

关于python - 如何修改模型字段,然后使用 Python/Django 中的 Rest Framework 发送它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909676/

相关文章:

django - 为什么 Django 中没有 "ListField"?

java - 我怎样才能用Java编写这个Python代码(解析一串整数,使用分隔符)?

python - 时间数据 '2015-02-10T13:00:00Z' 与格式 '%Y-%m-%d %H:%M:%S' 不匹配

python - 遍历 Django 项目中的每个模型

python - Django 在多对多关系中获取相关对象

python - django 表单为关键字参数获取了多个值

python - Pandas:如果在 groupby 之后基于其他列存在重复项,则根据特定列上给出的权重保留特定行

javascript - 用python更新 Electron 中的元素(和 flask ?)

python - 从一系列数据框列中删除单词

Django 管理操作日志记录 : how to display initial and result value of field changes?