Django:将所有实例连接到一组实例

时间:2018-06-12 18:41:39

标签: python django

我有2个型号:

class Listing:
    title = models.CharField()

class Location(models.Model):
    listing = models.ForeignKey(Listing)

给定一组位置l = Location.objects.all()

我想找l.listing(这不是正确的命令)

类似于listings = Listing.objects.filter(listing_set_in=l)

必须尽可能高效

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要查找清单中的所有项目,这些项目存在于l queryset中。为此,您可以按l的值筛选列表查询集。 您可以使用Django子查询来减少查询量。

w / Subquery

Listing.objects.filter(pk__in=l.values('listing_id'))

与Subquery相同

from django.db.models import Subquery
Listing.objects.filter(pk__in=Subquery(l.values('listing_id')))