2014-05-23 53 views
0

在我的窗口小部件模型,我想有一個GenericForeignKey到名爲過濾器的模型,這是在另一個數據庫表映射與適當的分貝路由器:GenericForeignKey在另一個數據庫模型

# default database 
class Widget(models.model): 
    content_type = models.ForeignKey(ContentType, blank=True, null=True) 
    object_id = IntegerField(blank=True, null=True) 
    content_object = generic.GenericForeignKey() 

# router on the second db 
class Db2_Manager(models.manager.Manager): 
    db = 'db2' 
    def get_queryset(self): 
     return queryset(self.model, using=self.db) 

# Model on the second db 
class Filter(models.Model): 
    title=models.TextField() 
    class Meta: 
     db_table = u'abc\".\"_filter' 

    objects = Db2_Manager() 

例子在Django外殼:

[in] : f1 = Filter.objects.first() # This is the external db object, which works 
[in] : f1.title 
[out]: 'My title' 
[in]: new_widget = Widget(content_type=ContentType.objects.get_for_model(f1), object_id=f1.id) 
[in] : new_widget.save() 
[in] : new_widget.content_type 
[out]: <ContentType: filter> 
[in] : new_widget.object_id 
[out]: 23 
[in] : new_widget.content_object 
[out]: ProgrammingError: schema "abc" does not exist 

我已複製的篩選數據庫(DB2)的django_content_type表,但我得到上面...任何建議錯誤如何正確路線new_widget.content_object到正確的數據庫?

在此先感謝。

回答

0

https://docs.djangoproject.com/en/dev/topics/db/multi-db/#limitations-of-multiple-databases

Django不支持ForeignKey的,或者在不同的DBS跨越多對多的關係。這同樣適用於GenericForeignKey。

你的兩個模型需要在同一個分貝。

+0

我知道這個限制,但是沒有技巧或解決方法來填充content_object?不幸的是我不能移動任何模型... – caneta

+0

https://code.djangoproject.com/ticket/15610 – Anentropic

+0

我不認爲你想複製內容類型表...它是需要修補的Django GenericForeignKey機制本身 – Anentropic

相關問題