Python 为queryset中的每个实例获取FK集
我有一个类似于Django的树模型,称为a,由Django mptt完成Python 为queryset中的每个实例获取FK集,python,django,Python,Django,我有一个类似于Django的树模型,称为a,由Django mptt完成 class A(MPTTModel): parent = TreeForeignKey('self') 这个类自动具有“children”管理器,因此我可以很容易地获得子树 还有另一个模型,其FK链接到: class SomeModel(models.Model): link_to_a = models.ForeignKey(A) 我知道,如果我想获得实例的某个模型集,我可以这样做: a = A.obj
class A(MPTTModel):
parent = TreeForeignKey('self')
这个类自动具有“children”管理器,因此我可以很容易地获得子树
还有另一个模型,其FK链接到:
class SomeModel(models.Model):
link_to_a = models.ForeignKey(A)
我知道,如果我想获得实例的某个模型集,我可以这样做:
a = A.objects.filter(blah)
a.somemodel_set.all()
问题是:
获取模型下某个查询集中每个实例的somemodel_集的最具python风格的方法是什么,即我想要4个示例:
some_A_instance.children.all().get_all_somemodel_instances()
和get_all_somemodel_instances()应检索每个子级的ziped queryset集这应执行以下操作:
[child.somemodel_set.all() for child in some_A_instance.children.all()]
这应该做到:
[child.somemodel_set.all() for child in some_A_instance.children.all()]
您是只需要一个列表中的相关项,还是需要将每个集合与其父集合相关联?如果是前者,您可以通过以下方法一次获取所有信息:
related_items = SomeModel.objects.filter(link_to_a=some_A_instance.children.all())
它将执行一个查询(带有一个子查询)来获取所有内容
否则,您可以使用一次性获取所有项目的相关集:
items = some_A_instance.children.all().prefetch_related('somemodel_set')
您是只需要一个列表中的相关项,还是需要将每个集合与其父集合相关联?如果是前者,您可以通过以下方法一次获取所有信息:
related_items = SomeModel.objects.filter(link_to_a=some_A_instance.children.all())
它将执行一个查询(带有一个子查询)来获取所有内容
否则,您可以使用一次性获取所有项目的相关集:
items = some_A_instance.children.all().prefetch_related('somemodel_set')
这是列表的输出,我需要像QuerySet一样的惰性对象。输出是QuerySet对象的列表。这是列表的输出,我需要像QuerySet一样的惰性对象。输出是QuerySet对象的列表。