Django - 模型是否需要自己的表,如果它继承只是为了改变经理?
问题描述:
我读过这个thread,它处理Django注释的问题,在“user”字段上使用select_related(),从而减少了不必要的sql查询。Django - 模型是否需要自己的表,如果它继承只是为了改变经理?
我最喜欢的建议是创建我自己的评论模型并覆盖当前使用的管理器。
这是我有:
#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创建一个表。如果我正在更改的是管理器,那么我真的需要拥有此表吗?如果将managed设置为false,为什么Django会创建它?
由于提前,
答
一开始,你的内部类应该叫Meta
,不meta
。
但是,而不是managed = False
,您应该使用proxy = True
来表示您正在创建代理模型而不是另一个真实模型。