2012-06-07 15 views
0

我有以下查询:你可以使用__in来过滤外键吗?

Child.objects.filter(
    foreign_key_field__in=Parent.objects.filter(param=something)) 

的看法与死亡:

invalid literal for int() with base 10: 'value of something' 

在我看来,该foreign_key_field预期某种类型的id,而我给它的实际值。难道我做错了什么?这可能吗?

目标是避免遍历父级的child_set以调用子级中的另一个查询生成方法,这会导致为每个返回的每个对象都生成一个查询。相反,我想诱导ORM在一个查询中抓取所有匹配的子元素,并像往常一样遍历它们。

回答

1

问题是你在干什么:

Child.objects.filter(parent__in=Parent.objects.filter(...)) 

Child.objects.filter(parent_id__in=Parent.objects.filter(...)) 

第一个版本将工作,第二个版本将会给你“无效字面INT()基数为10”错误。

相关问题