我想覆盖现有模型并使用不同的管理器,同时保留相同的db表,以便我可以使用不同位置的不同管理器查询相同的数据。
我的代码如下:
MyTagging / models.py
from tagging.models import Tag as tagging_tag, TagManager as tagging_tagmanager
class TagManager(tagging_tagmanager):
def get_query_set(self):
return super(TagManager,self).get_query_set().filter(site=settings.SITE_ID)
class Tag(tagging_tag):
#id = models.AutoField(primary_key=True)
objects=TagManager()
class Meta:
db_table="tagging_tag"
但如果我sql它代码将是这样的:
CREATE TABLE "Tagging_local_tag" (
"tag_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "tagging_tag" ("id")
)
;
tag_ptr_id
字段在此处引发问题,它正在尝试创建新表并引用原始表。
有没有办法解决这个问题?
答案 0 :(得分:2)
只需像这样创建一个proxy model:
class Tag(tagging_tag):
#id = models.AutoField(primary_key=True)
objects=TagManager()
class Meta:
proxy = True