django - Django Rest Framework:动态更改嵌套对象
问题描述
我正在使用GenericForeignKey
and ContentTypes
,如何动态更改 DRF 序列化程序中的嵌入对象?
例如:
class FooObjectSerializer(serializers.ModelSerializer):
"""
Represents every foo object
"""
# 'bar=BarSerializer' if content_type is for Bar model.
# 'baz=BazSerializer' if content_type is for Baz model.
class Meta:
model = models.StoreObject
fields = ['id', 'content_type', 'object_id', 'content_object']
解决方案
你可以做
class FooObjectSerializer(serializers.ModelSerializer):
# skipped
def __init__(self, *args, **kwargs):
super(FooObjectSerializer, self).__init__(*args, **kwargs)
if self.instance:
if isinstance(self.instance.content_object, Bar):
self.fields['content_object'] = BarSerializer()
# adjust these checks as you may wish
推荐阅读
- dotnetrdf - 如何在 dotnetrdf QueryBuilder 中保持绑定顺序?
- ms-access - VS 2015 错误:指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配
- android-studio - 当我更改包名称时,我收到此错误“无效的包名称”
- architecture - MMO 等多人游戏如何处理大量请求
- python - Flask_SQLAlchemy create_all() 不起作用
- visual-studio-2019 - 如何解决 LNK2019 未解决的外部 __imp____iob_func
- r - 为什么我在 R 中将类别视为 0?
- python - 无法为我的 tkinter 应用程序设置背景颜色?
- java - XStream XStreamMarshaller CannotResolveClassException java.util.ArrayList
- typescript - 打字稿UTC到本地时间