ForeignKey和ManyToMany自我查询

时间:2013-04-11 01:35:39

标签: django django-models

我有一个Django模型如下:

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)

类别可以包含相关类别。例如,如果类别是“兽医”,则相关类别可能是“动物”,“医学”等。我想查找某个类别中的所有主题及其相关类别。

我无法弄清楚如何做到这一点,我想我想要这样的事情:

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

但这只会引发错误。有任何想法吗?

1 个答案:

答案 0 :(得分: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)

(取决于哪种方式更方便。)