用于种子库存的 SQLite Django 模型

SQLite Django Model for Inventory of Seeds

我正在尝试为处理种子销售的 Django 应用程序构建库存模型。种子以单一品种的 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、演示文稿和 cost/price。

我的问题是,当我为同一产品和演示文稿添加多个库存条目时,我似乎无法查询每个产品的每个可用(数量>0)库存条目的最早价格。

到目前为止我尝试过的是:

stock = Stock.objects.filter(quantity__gt=0).order_by('-date')
stock = stock.annotate(min_date=Min('date')).filter(date=min_date)

但是 returns 那个 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'))

原来我没有使用 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'))