用另一个查询集中与之相关的实例计数注释查询集

时间:2019-09-11 00:55:14

标签: django

我有三个类似的模型,

Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE )
    city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True)

Product(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    price = models.FloatField()
    geo_location = models.PointField(srid=4326, null=True, blank=True)

City(models.Model):
    name = models.CharField(max_length=75)
    geom = models.MultiPolygonField(srid=4326)
如果指定了

相关城市,可以从 geo_location 字段中检索,例如:

city = City.objects.get(geom__contains=someproduct.geo_location)

或通过所有者的个人资料:

city = someproduct.owner.profile.city

让我们假设我有以下查询:

all_cities = City.objects.all()
products = Product.objects.filter(price__lt=2500)

我要实现的是 products 查询集

all_cities 查询集的每个实例的 products_count 属性

也许循环可以解决此问题,但不知道如何实现,并且可能存在使用 Subquery OuterRef

的另一种解决方案

0 个答案:

没有答案