0

我有“三个”模型:

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 应该降低,而当它是“捐赠”时它应该上升。

4

2 回答 2

0

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

于 2015-05-18T17:42:08.650 回答
0

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

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

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

于 2015-05-18T17:45:50.663 回答