如何覆盖django应用程序的模型并使用相同的db表?

时间:2012-08-21 08:18:20

标签: database django django-models

我想覆盖现有模型并使用不同的管理器,同时保留相同的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字段在此处引发问题,它正在尝试创建新表并引用原始表。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

只需像这样创建一个proxy model

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

    class Meta:
        proxy = True