我正在尝试为处理种子销售的Django App构建库存模型。种子以3种,5种或10种单一品种的种子形式储存和销售(例如:3包芥菜种子)。
我想以每个条目的价格向库存中添加x数量的产品,并且只要该条目有剩余项目(数量字段> 0),即使后来的条目已经制作,也以该价格出售该产品对于相同的产品和演示,但价格不同,所以我有以下模型:
class Product(models.Model):
name = models.CharField(max_length=100)
class Presentation(models.Model):
seed_qty = models.IntegerField()
class Stock(models.Model):
date = models.DateField(auto_now=True)
quantity = models.IntegerField()
product = models.ForeignKey(Product, on_delete=models.CASCADE)
presentation = models.ForeignKey(Presentation, on_delete=models.CASCADE)
cost = models.FloatField(null=True, blank=True)
sell_price = models.FloatField(null=True, blank=True)
我想知道我是否应该通过GeneralEntry中间模型将Product和Stock实际关联到ManyToMany字段,其中我存储date_added,演示文稿和成本/价格。
我的问题是,当我为同一产品和演示文稿添加多个股票分录时,我似乎无法查询每个产品的每个可用(数量> 0)股票分录的最早价格。
到目前为止我尝试过的是:
stock = Stock.objects.filter(quantity__gt=0).order_by('-date')
stock = stock.annotate(min_date=Min('date')).filter(date=min_date)
但是返回的是max_date没有被定义。
有关如何查询或重新排列此模型的任何想法?
谢谢!
***更新:我没有使用django.db.models的F()函数。
这样做是有效的:
stock = Stock.objects.filter(quantity__gt=0).order_by('-date')
stock = stock.annotate(min_date=Min('date')).filter(date=F('min_date'))
答案 0 :(得分:0)
原来我没有使用django.db.models的F()函数。
这样做是有效的:
stock = Stock.objects.filter(quantity__gt=0).order_by('-date')
stock = stock.annotate(min_date=Min('date')).filter(date=F('min_date'))