我在models.py
中有以下内容:
class Merchant(models.Model):
name = models.CharField(max_length=256)
priority = models.PositiveIntegerField()
class MerchantWine(models.Model):
merchant = models.ForeignKey("Merchant")
wine_vintage = models.ForeignKey("WineVintage")
price = models.DecimalField(null=True, blank=True, max_digits=8, decimal_places=2)
minimum_purchase_unit = models.PositiveIntegerField()
问题:在我的查询集中,我试图将MerchantWine对象限制为
一个。有重复WineVintages和的最低价格版本 B.如果价格相同,那么我想选择与优先级最低的商家相对应的价格。
在我的views.py
中,我尝试了以下内容:
def get_queryset(self):
#A Restrict MerchantWines to lowest price version(s) of same wine_vintage
minimum_prices = MerchantWine.objects.values('wine_vintage').annotate(lowest_price=Min('price'))
results_list = MerchantWine.objects.filter(price__in=minimum_prices.values('lowest_price'))
#B Restrict MerchantWines to preferred merchant of same wine_vintage and price
preferred_merchants = results_list.values('wine_vintage').annotate(lowest_priority=Min('merchant__priority'))
results_list = results_list.filter(merchant__priority__in=preferred_merchants.values('lowest_priority')) # NOT WORKING ON PROD: Chardonnay
return results_list
似乎A.)正在运作,但B.)并不总是有效。
有人可以帮忙吗? 非常感谢提前。