我已经阅读了这个thread,它处理了让Django注释在“user”字段上使用select_related()的问题,从而减少了不必要的SQL查询。
我最喜欢的建议是创建我自己的评论模型并覆盖当前使用的管理器。
这就是我所拥有的:
#models.py
class LightCommentManager(CommentManager):
def get_query_set(self):
qs = (super(CommentManager, self).get_query_set().select_related('user'))
return qs
class LightComment(Comment):
objects = LightCommentManager()
class meta:
managed = False
这一切都很好但是当我同步syncdb时,Django仍然为LightComment创建了一个表。如果我要更改的是管理器,那么我真的需要拥有此表吗?如果托管设置为false,为什么Django会创建它?
提前致谢,
答案 0 :(得分:2)
首先,您的内部类应该被称为Meta
,而不是meta
。
但是,您应该使用managed = False
来表示您正在创建代理模型而不是另一个真实模型,而不是proxy = True
。