Django,过滤不同的外键,其中一个结果等于一个值

时间:2013-08-27 19:13:48

标签: python django django-models

我正在创建一个电视网站,其中有'人'和'电视'表,第一个是演员信息,第二个是关于他们制作的节目中的外观信息。

在一场演出中可能会有多次出现同一个演员,所以电视剧的倍数。我希望显示具有字段值'in_summary'= true

的tvpeople摘要

目前我有:

cast_summary = tvpeople.filter(in_summary=True)

然而,这个输出带来了相同电视的倍数,例如

John Doe
John Doe
John Doe

我希望根据'tvpeople.people.name'的值不同,收集多个相同的peson。

以下结果导致选择无效的错误:

cast_summary = tvpeople.filter(in_summary=True).distinct('people.name')

任何想法如何做到这一点?感谢

2 个答案:

答案 0 :(得分:1)

在Django,traversing relationship is done using __, not .

假设tvpeople具有people属性,则查询将为:

t_summary = tvpeople.filter(in_summary=True).distinct('people__name')

在问题中发布模型中的相关代码会有所帮助。

答案 1 :(得分:0)

t_people = tvpeople.filter(in_summary=True).values('name').distinct()

会为您提供展会中人员姓名的唯一值(假设您的专栏标题为' name')。如果你想要人物对象,你可以这样做:

people = people.filter(name__in=t_people).distinct()

假设您的数据库不是巨大的,那么这应该可以满足您的需求。