I've read this thread which deals with the issue of making Django comments use select_related() on “user” field thereby reducing needless sql queries.
The suggestion I like best is to create my own comment model and override the manager currently used.
This is what I have:
#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
This all works fine but when I syncdb, Django still creates a table for LightComment. Do I really need to have this table if all I'm changing is the manager, and why does Django create it if managed is set to false?
Thanks in advance,
For a start, your inner class should be called Meta
, not meta
.
But rather than managed = False
, you should be using proxy = True
to signify that you are creating a proxy model rather than another real model.