【问题标题】:Django inventory app, where to override save for quantity control?Django库存应用程序,在哪里覆盖保存以进行数量控制?
【发布时间】:2015-05-18 17:28:28
【问题描述】:

我有“三个”模型:

class Book(models.Model):
    title = models.CharField(max_length=200)
    price = models.FloatField()
    quantity = models.IntegerField()

class Operation(models.Model):
    operation_type_choices = (
        ('sell', 'Sell'),
        ('donation', 'Donation'),
    )
    book = models.ManyToManyField(Book, through = 'BookOperation') 
    operation_type = models.CharField(max_length=50, choices=operation_type_choices)

class BookOperation(models.Model):
    book = models.ForeignKey(Book)
    operation = models.ForeignKey(Operation)
    quantity = models.IntegerField()

我想知道我应该在什么模型中重写 save() 函数来管理操作何时“出售”,所以 book.quantity 应该降低,而当它是“捐赠”时应该上升。

【问题讨论】:

    标签: python django django-admin inventory inventory-management


    【解决方案1】:

    我会在具有quantity 属性的模型中执行此操作。 查看Signals Documentation 以避免覆盖save() 方法并使用post_savepre_save 方法。

    【讨论】:

      【解决方案2】:

      虽然也可以通过其他方式进行建模,但我想您选择了对您的要求最有意义的一种。

      鉴于特定的模型,我假设在进行“操作”时会同时使用 OperationBookOperation 模型。这当然取决于您稍后将如何构建表单以及相关视图。但鉴于此,似乎它们中的任何一个都足以用于save() 函数。

      从外观上看,我肯定不会使用Book 模型,因为这是您的主模型,它不会立即受到“操作”事务的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-21
        • 1970-01-01
        • 2013-06-19
        • 2011-08-17
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        相关资源
        最近更新 更多