您好,我需要在其余框架将数据发送到客户端之前修改一些数据。发送的数据来自模型对象。
这是我的模型的代码示例。
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/