Django - 模型是否需要自己的表,如果它只是为了更改管理器而继承?

时间:2014-03-24 14:03:40

标签: django django-models django-inheritance

我已经阅读了这个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会创建它?

提前致谢,

1 个答案:

答案 0 :(得分:2)

首先,您的内部类应该被称为Meta,而不是meta

但是,您应该使用managed = False来表示您正在创建代理模型而不是另一个真实模型,而不是proxy = True