2013-04-11 49 views
1

我有一個Django模型如下:ForeignKey的和多對多自我查詢

class Topic(models.Model): 
    name=models.CharField(db_index=True,max_length=30) 
    categorykey=models.ForeignKey(Category) 

class Category(models.Model): 
    categorykey=models.CharField(db_index=True,max_length=30) 
    relatedcategories=models.ManyToManyField("Category",symmetrical=False) 

類別可以有相關的類別。例如,如果類別是「Vet」,相關類別可能是「動物」,「醫學」等。我想查找某個類別中的所有主題,以及它們的相關類別。

我無法弄清楚如何做到這一點,我想,我想是這樣的:

categorykey="Vet" 
topics=list(Topic.objects.filter(categorykey__relatedcategories__in=categorykey)) 

但這只是拋出一個錯誤。有任何想法嗎?

+0

什麼樣的錯誤? – ecdani 2013-04-11 07:27:25

回答

0

試試這個:

topics = Topic.objects.filter(categorykey__relatedcategories__categorykey = 'Vet') 

或者這樣:(這取決於哪一個更方便您)

vet_category = Category.objects.get(category_key = 'Vet') 
topics = Topic.objects.filter(categorykey__relatedcategories = vet_category)