可以说我有以下模型:
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/