2013-05-14 30 views
0

即時嘗試學習python/django在這一刻,並遇到以下問題。 比方說,我有3種型號:獲取所有「盛大」 - 給定模型的孩子

Model Category(models.Model) 
    name = models.Charfield(max_length64) 

Model Subcategory(models.Model) 
    category = models.ForeignKey(Category) 
    name  = models.Charfield(max_length64) 

Model Animal(models.Model) 
    subcategory = models.ForeignKey(Subcategory) 
    name = models.Charfield(max_length64) 

現在,例如,如果有人搜索類別,我想有凡在任何給定的主要類別的子類別的動物。 (希望它不是太複雜)

所以現在我的問題是什麼是最有效的方式來做到這一點?

在此先感謝!

+1

如果你的邏輯和築巢的需求變得越來越複雜,你應該考慮的Django MPTT用於存儲這種類型的數據。一對情侶層無法管理,但一旦開始變得更深,最好擁有一個更強大的系統。 – John

回答

2

你可以做一個查詢:

animals = Animal.objects.filter(subcategory__category__id=category_id) 

,或者,如果你有機會獲得類別對象,

animals = Animal.objects.filter(subcategory__category=category) 

請注意,模型對象定義爲class <ClassName>,而不是Model <ClassName> 例子: Model Animal應該是class Animal

+0

謝謝:)多數民衆贊成它 – phil

1

我會做這與下面的查詢集:

animals = Animal.objects.filter(subcategory__category=category) 
+0

非常感謝。那就是我正在尋找的! – phil