繁体   English   中英

Django库存应用程序,在哪里覆盖保存以进行数量控制?

[英]Django inventory app, where to override save for quantity control?

我有“三个”模型:

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应该降低,而在“ donation”时应该提高。

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

尽管建模也可以通过其他方式完成,但我想您选择了对您的需求最有意义的一种。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM