可以说我有以下模型:
class ParentModel(models.Model):
name = models.CharField()
child = models.ForeignKey("ChildModel")
class ChildModel(models.Model):
name = models.CharField()
现在,给定 ParentModels 的一些过滤器,我想检索所有子模型的列表。我努力了:
children = ParentModel.objects.filter(name__startswith='A').values_list('child', flat=True)
然而,这会返回一个 ChildModel id 列表,而不是完整的对象。是否有一个查询集函数可以完成我正在尝试做的事情,或者我是否需要使用返回的 ID 编写一个额外的过滤器查询?即 - 而不是:
children => [51L, 53L, 54L]
我想:
children => [<ChildModel: ChildModel Object>, <ChildModel: ChildModel Object>, <ChildModel: ChildModel Object>]
原文由 MarkD 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将子查询与
__in
一起使用:(请注意,您的命名在这里有点奇怪:通常孩子是带有外键的那个,因为它假定父母可以有多个孩子。)