【发布时间】:2017-08-16 13:49:51
【问题描述】:
我正在尝试根据实例本身在我的 ModelSerializer 上动态包含/排除特定字段。所以,假设我有一个层次模型,它使用自连接来表示地理:
class TreeModel():
name = CharField()
kind = CharField(choices=['country', 'state', 'city'])
parent = ForeignKey(self, related_name='children')
鉴于此,假设我想在种类为“州”时隐藏实例的“子”关系链接,然后在种类为“国家”时显示它。我尝试摆弄get_fields 方法,但没有奏效。
我希望这样做,因为在我的模型中,TreeModel 类的某些实例有数千个子级,而其他实例只有几个。我不想向孩子展示某些实例类型,因为它会降低性能,我只需要它们作为子集。谢谢
【问题讨论】:
-
您想为检索请求或列表请求执行此操作吗?
-
如果“检索”是指获取单个对象(详细视图与列表视图),那么是的,这正是我的意思。但是,考虑到我使用的序列化程序(JSONAPI),这也意味着列表视图中包含的每个单独对象通常都包含对每个字段的引用。 (这不是一个嵌套的序列化程序;我的意思是,如果我请求一个“混合类型”列表,它仍然需要根据列表中的每个单独的对象类型动态选择子字段。