我有一个Document模型,它与User有多对多的“收藏夹”关系。当我在搜索页面上显示文档列表时,我想显示每个文档是否为当前用户的最爱。我知道这样做的两种方式,一种更有效,一种更清洁。我想知道是否有另一种方式可以做到这一点,这样既高效又干净。在Django模板中查询M2M关系
干净的版本。只需在模型“is_favored(user)”上有一个方法,告诉文档是否受到给定用户的青睐。然后有一个简单的模板标签,使用这个函数来显示一个空的星形或一个填充的星形。当然,这样做效率不高,因为它会为每个文档创建不同的数据库调用。但这很好,因为视图不需要以任何方式改变。
高效版本。在视图中执行单个数据库查询以检索最喜欢的查询并在每个文档上添加“偏好”字段。我不喜欢这种方法,因为我必须将自定义代码添加到显示文档的所有视图,而且它不会太干。
有没有更好的方法既干爽又高效? 谢谢。
我不认为我能有机会到我传递的文档是DRY模板在上下文处理器中。为了在每个文档中添加一个“最喜欢的”变量,我需要它。 –