Django不支持在更改列表中显示多对多关系中的相关对象,这是有充分理由的。这将导致大量的数据库命中。
但有时它是不可避免的,也是必要的,例如在更改列表中显示对象的类别,该类别与对象具有多对多关系。鉴于这种情况,是否有人有一些经验/片段等来加快这一点(考虑缓存,自定义SQL查询......)? (我知道我可以创建一个调用object.categories.all()
的方法......但是这可能真的很麻烦......)。
答案 0 :(得分:1)
如果您认为更改列表中的另一个数据库每行是不可接受的,那么您必须在模型中选择denormalization
。
问题是如何存储这个ManyToMany关系?也许您可以使用CharField
或TextField
中的同步JSON
serialized object来序列化您需要的字段子集(例如pk
和name
)。
但是在添加可能很大的列时要小心对性能的副作用,查询集的defer method是你的朋友。