Django:在更改列表中显示多对多字段

时间:2010-10-04 15:29:03

标签: sql django django-admin many-to-many django-select-related

Django不支持在更改列表中显示多对多关系中的相关对象,这是有充分理由的。这将导致大量的数据库命中。

但有时它是不可避免的,也是必要的,例如在更改列表中显示对象的类别,该类别与对象具有多对多关系。鉴于这种情况,是否有人有一些经验/片段等来加快这一点(考虑缓存,自定义SQL查询......)? (我知道我可以创建一个调用object.categories.all()的方法......但是这可能真的很麻烦......)。

1 个答案:

答案 0 :(得分:1)

如果您认为更改列表中的另一个数据库每行是不可接受的,那么您必须在模型中选择denormalization

问题是如何存储这个ManyToMany关系?也许您可以使用CharFieldTextField中的同步JSON serialized object来序列化您需要的字段子集(例如pkname)。

但是在添加可能很大的列时要小心对性能的副作用,查询集的defer method是你的朋友。