1

我想覆盖现有模型并使用不同的管理器,同时保留相同的数据库表,以便我可以在不同的地方使用不同的管理器查询相同的数据。

我的代码如下:

我的标签/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字段在这里引起问题,它正在尝试创建一个新表并引用原始表。

有没有办法处理这个问题?

4

1 回答 1

3

只需像这样创建一个代理模型

class Tag(tagging_tag):
    #id = models.AutoField(primary_key=True)
    objects=TagManager()

    class Meta:
        proxy = True
于 2012-08-21T12:13:48.410 回答