试图在Django中创建一个小型库存应用程序

时间:2012-12-08 05:56:55

标签: database django database-design database-schema

我正在尝试在Django应用中制作一个小型库存应用。我希望能够看到库存,它在哪里(两个地方之间和所有地方),购买以添加到库存,并出售以减少库存。跟踪销售情况会很好。总而言之,我想做大约五件事。为了跟踪位置,我考虑将仓库一个列为1,将两个列为2,并且可以查询WHERE字段= 1,但如果我在两个地方有相同的产品,我会遇到问题。我也不知道接近它的最佳方法。通过这里的帖子阅读,我看到有些人说只跟踪销售情况,并将它们整合在一个平面数据库中,其他人从数据库中删除,但这会导致差异。这是我的model.py到目前为止,只是在这里真正刺伤黑暗,寻找一些指导。

from django.db import models

class Product(models.Model):
    product_ID = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    type = (
        ('WHT' , 'White Wine'),
        ('RED' , 'Red Wine'),
        ('SPRT', 'Spirits'),
        ('BR'  , 'Beer'),
    )
    size = (
        ('12' , '12oz'),
        ('16'  , '16oz'),
        ('375' , '375mL'),
        ('750' , '750mL'),
        ('1' , '1L'),
    )
    amount_per_case = models.IntegerField()
    warehouse = (
            (1 , 'One'),
            (2 , 'Two'),
    )
    on_hand = models.IntegerField() 

class Store(models.Model):
    store_ID = models.IntegerField(primary_key=True)
    store_name = models.CharField()
    store_type = (
            ('Supermarket', 'Supermarket'),
            ('Liquor Store', 'Liquor Store'),
    )
    store_address = models.CharField()
    store_phone = models.CharField()
    store_contact = models.CharField()

class Vendor(models.Model):
    vendor_ID = models.IntegerField(primary_key=True)
    vendor_name = models.CharField()
    vendor_address = models.CharField()
    vendor_phone = models.CharField()
    vendor_contact = models.CharField()

class Sale(models.Model):
    sale_date = models.DateField()
    sale_product = models.ForeignKey(Product)

1 个答案:

答案 0 :(得分:1)

您应该创建一个Warehouse模型并在Product和Warehouse之间创建多对多关系,使用through选项指定另一个模型来保存称为WarehouseProduct之类的关系详细信息,您可以在其中存储计数。请参阅this section of the docs和以下部分。

P.S。你可以做同样的事情来将销售与特定商店联系起来,在我看来这也是你可能感兴趣的东西。