2014-03-24 64 views
1

我讀過這個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會創建它?

由於提前,

回答

2

一開始,你的內部類應該叫Meta,不meta

但是,而不是managed = False,您應該使用proxy = True來表示您正在創建代理模型而不是另一個真實模型。

相關問題