可以说我有以下模型:

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的列表,而不是完整的对象。是否有一个queryset函数可以完成我想做的事情,还是需要使用返回的ID编写一个附加的过滤器查询?即-而不是:
children => [51L, 53L, 54L]

我想:
children => [<ChildModel: ChildModel Object>, <ChildModel: ChildModel Object>, <ChildModel: ChildModel Object>]

最佳答案

您可以使用带有__in的子查询:

Child.objects.filter(parent__in=Parent.objects.filter(name__startswith='A'))

(请注意,您的命名在这里有点奇怪:通常, child 是具有外键的 child ,因为它假定 parent 可以有多个 child 。)

关于python - Django-获取外键对象列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45062238/

10-10 08:07