用于种子清单的SQLite Django模型

时间:2018-03-31 21:13:21

标签: python django sqlite model inventory

我正在尝试为处理种子销售的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'))

1 个答案:

答案 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'))