如何在django中创建其他对象后自动创建新对象?

时间:2015-02-01 15:59:05

标签: django django-models

例如,我有两个班级。

class Book(models.Model):
    title = models.CharField (...)    
    author = models.CharField (...)
    price = models.Integer(...)

class Order(models.Model)
    order_datetime = models.DateTimeField()
    order_book = models.ForeignKey(Book,....)

在每次在数据库中添加新的Book对象后,应该自动创建新的Order对象。并且order_book fielt应该使用相应的书籍对象自动执行。

我该怎么做?

Thanx的帮助!

1 个答案:

答案 0 :(得分:1)

您可以覆盖Book的保存方法:

class Book(models.Model):
    title = models.CharField (...)    
    author = models.CharField (...)
    price = models.Integer(...)

    def save(self, *args, **kwargs):
        is_new = True if not self.id else False
        super(Book, self).save(*args, **kwargs)
        if is_new:
            order = Order(order_book=self)
            order.save()

如果它应该填充插入时间,你也可以将auto_now_add = True添加到order_datetime:

order_datetime = models.DateTimeField(auto_now_add=True)