我有三个类似下面的模型,我想要在一个查询中获取我的物品的最新销售日期,这是使用SQL肯定可以实现的,但我正在尝试使用内置的Django功能:
class Item(models.Model):
name = models.CharField()
...
class InventoryEntry(models.Model):
delta = models.IntegerField()
item = models.ForeignKey("Item")
receipt = models.ForeignKey("Receipt", null=True)
created = models.DateTimeField(default=timezone.now)
...
class Receipt(models.Model):
amt = models.IntegerField()
...
我所要做的是查询我的物品并注明它们上一次销售的时间。可以通过查询InventoryEntry模型来确定某个记录是否为销售记录,基于收据的存在(库存也可能因为订单、被盗等原因而调整,但我只关心最近一次销售)。
我的查询目前看起来像这样,目前只能获取任何库存条目的最新值。我想筛选注释,仅在InventoryEntry上receipt__isnull=False时返回created的最大值:
Item.objects.filter(**item_qs_kwargs).annotate(latest_sale_date=Max('inventoryentry_set__created'))
我尝试使用When查询表达式,但它没有按预期工作,可能是我误用了它。希望能得到任何有见地的建议。
filter(**item_qs_kwargs)
后面加上filter(inventoryentry__receipt__isnull=False)
无法正常工作? - Aziz Alfoudari