要点:
モデル:
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を書きたくありません。私は答えを見つけるために最善を尽くしましたが、私の特定の問題をグーグルで検索することはできませんでした。
ありがとう!