2011-05-24 70 views
0

王氏以下模式設置:反向外鍵集模型視圖

class Cat(models.Model): 
    claw = models.CharField(max_length=20) 
    name = models.CharField(max_length=20) 

class Fur(models.Model): 
    type = models.CharField(max_length=20) 
    cat = models.ForeignKey(Cat) 

    class Meta: 
     db_table=u'cat_view' 
     managed=False 

example

皮草有一個外鍵貓。 CatView是手動管理的Cat的子集視圖。有沒有辦法在這個設置中使用django的有用的反向設置方法?

此外,我可以只使用Fur.objects.filter(cat_id = cat_view.id,...)這將是cat_view.fur_set.filter(...)相同的功能,但我不能做反向查找,如CatView.objects.filter(fur__type =「shaggy」)。

編輯: 增加了示例模型文件,爲清晰起見更改後的圖像,增加了問題的複雜性。

回答

1

首先,您給出的那些ORM調用都不起作用:fur_setcat實例的屬性,而不是Cat.objects管理器的屬性。其次,Django對數據庫視圖的所有沒有特別的支持,所以你關於在視圖中使用這個特定位的功能的問題有點奇怪。您可以可能將CatView定義爲單獨(非託管)模型,但您需要小心更新和保存。然後你就可以直接查詢Fur對象獲得的反向關係同樣的效果:

Fur.objects.filter(cat=my_cat_view.id) 
+0

感謝您的輸入,我編輯我的問題和圖像。我手動管理一個視圖,你可以看到我需要的附加功能,不能通過直接查詢Fur對象來完成。 – DivineSlayer 2011-05-24 11:43:49