gpt4 book ai didi

Django 休息框架 : is it possible to modify a Serializer class at runtime?

转载 作者:行者123 更新时间:2023-12-01 02:24:08 25 4
gpt4 key购买 nike

我看到我可以在运行时轻松修改 Serializer 的 Meta 选项(我什至不确定这是调用它的正确方法,我读到有人称它为猴子补丁,即使我不喜欢它):

NodeDetailSerializer.Meta.fields.append('somefield')

如果我需要执行以下操作怎么办:
NodeDetailSerializer.contact = serializers.HyperlinkedIdentityField(view_name='api_node_contact', slug_field='slug')
NodeDetailSerializer.Meta.fields.append('contact')

为什么我需要这样做?
我正在尝试构建一个模块化应用程序,我有一些可以添加的可选应用程序,它们会自动将一些功能添加到核心应用程序中。
我想将两个应用程序的代码分开,因为其他应用程序可能会移动到不同的存储库中。

编写模块化和可扩展的应用程序确实是一项棘手的工作。
如果有人有一些有用的资源可以分享,想知道更多。

费德里科

最佳答案

我找到了解决我的问题的方法。

我的问题是:我需要能够在不编辑核心应用程序代码的情况下添加指向其他资源的超链接。我需要从附加模块的代码中做到这一点。

我写了这个序列化程序 mixin:https://gist.github.com/nemesisdesign/8132696

可以这样使用:

from myapp.serializers import MyExtensibleSerializer

MyExtensibleSerializer.add_relationship(**{
'name': 'key_name',
'view_name': 'view_name_in_urls_py',
'lookup_field': 'arg_passed_to_to_view_name'
})

关于Django 休息框架 : is it possible to modify a Serializer class at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com