在 django 中创建其他对象后如何自动创建新对象?
Posted
技术标签:
【中文标题】在 django 中创建其他对象后如何自动创建新对象?【英文标题】:How create new object automatically after creating other object in django? 【发布时间】:2015-03-31 15:02:18 【问题描述】:例如,我有两个班级。
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 字段应该使用相应的 book 对象自动编译。
我该怎么做?
感谢您的帮助!
【问题讨论】:
Can Django automatically create a related one-to-one model?的可能重复 【参考方案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)
【讨论】:
非常感谢,尼玛!我会尝试使用它。 这一行我看不懂``` is_new = True if not self.id else False 在调用 super 之前,您需要决定是否第一次保存 Book,因为无论如何它都会有一个 id。 当我尝试这样做时,我在 order_book 中得到一个错误,我猜是因为在创建订单时这本书不是参数以上是关于在 django 中创建其他对象后如何自动创建新对象?的主要内容,如果未能解决你的问题,请参考以下文章