2012-11-06 57 views
0

我有一個查詢集,categories = unipart.categories.all(),這是一個unipart對象鏈接到的所有類別。從Django的查詢集中消除對象的最簡單方法

但是,我想刪除此列表中的頂級類別 - 即。那些具有unipart也列在其中的子類別。

或者那些parent_id等於查詢集中category_id之一的類別。

例如,如果一個unipart在上市: 肉豆蔻(父=香料)和 香料

那麼我只想包括肉豆蔻(父=食品) - 所以基本上我想「流行'來自查詢集的香料。

這樣做的最好方法是什麼?我寧願不使用列表。

這裏是我的模型:

class UniPart (models.Model): 
categories=models.ManyToManyField(Category, related_name = 'unipart') 

class Category (MPTTModel): 
    category = models.CharField(max_length=250) 
    oc_id= models.IntegerField() 
    parent = TreeForeignKey('self', blank=True, null=True, related_name='children') 
    def __unicode__(self): 
+0

發佈你的模型總是有幫助,而不是用單詞描述關係。 – miki725

+0

什麼是類別管理器?你可以顯示它的代碼嗎? – sergzach

回答

2

您可以排除誰擁有綁定到這個unipart項目的子類別的那些類別:

categories = unipart.categories.exclude(
       categorieschild__unipart = unipart).distinct() 

這裏categorieschild是針對兒童類去相關的名稱。

+0

謝謝,我不確定這是否正在工作。我上面張貼了我的模型。我仍然得到父母的孩子類別。 – user1328021

+0

耶實際上工作。謝謝! – user1328021

+0

很高興聽到它! – danihp

相關問題