【发布时间】:2013-02-25 15:20:49
【问题描述】:
直截了当:
模型:
class Shop(models.Model):
name = models.CharField(max_length=255)
class Product(models.Model):
name = models.CharField(max_length=255)
shops = models.ManyToManyField(Shop, through='ProductShop', related_name='products')
class ProductShop(models.Model):
product = models.ForeignKey(Product)
shop = models.ForeignKey(Shop)
price = models.DecimalField(max_digits=20, decimal_places=2)
现在我想获取所有销售该产品的商店中按最低价格订购的产品列表。我一直使用annotate 进行此类查询,但在这里我想不出任何解决方案。这大概是我想要得到的:
products = Product.objects.annotate(price=SOMETHING_TO_GET_THE_LOWEST_PRICE_PER_PRODUCT).order_by('price')
有什么好的解决方案吗?我知道extra,但不想写普通的SQL。我尽力寻找答案,但无法通过 Google 搜索我的具体问题。
谢谢!
【问题讨论】:
标签: python django model many-to-many