django - 在将关系添加到 django 中的数据库之前添加关系
问题描述
如果我在 django 有这样的关系
class Reporter(models.Model):
pass
class Article(models.Model):
reporter = models.ForeignKey(Reporter)
我想立即创建一个带有文章的新记者,我首先必须save()
将记者添加到数据库,然后才能添加文章。
但有时,我想准备一切“离线”(在某种意义上,在将任何东西推送到数据库之前),比如创建一个 Reporter 对象,向其中添加文章,然后可能仍然修改 Reporter 对象的某些属性。
然后,当一切都完成后,我想把所有东西都推到数据库中。但是当然,当我Reporter.article_set.add()
在调用之前使用时,Reporter.save()
我会得到一个错误,因为 django 会尝试自动将文章和外键添加到数据库中。有什么办法可以防止这种情况,并准备我的对象,包括“离线”关系?
我自己的方法是,添加一个set_articles
方法Reporter
,然后覆盖该save()
方法,以便检查是否设置了任何文章并在保存后添加它们Reporter
但在我开始即兴创作之前,我想知道 django 中是否已经有任何解决方案
解决方案
该save()
方法接受一个可选的commit
关键字参数,该参数接受True
或False
。如果您调用save()
with commit=False
,那么它将返回一个尚未保存到数据库的对象。在这种情况下,您可以调用save()
生成的模型实例。
推荐阅读
- python - 如何选择多个复选框然后将值存储在列表中?Python
- flutter - Flutter:在 performResize() 期间抛出了以下断言:垂直视口被赋予了无限的高度
- google-chrome - 是否可以使用 mkcert 创建一个证书供我在开发中的所有本地应用程序使用?
- javascript - typeorm 自引用一对多计数
- css - react-bootstrap 行和列定位错误
- android - 导航在导航抽屉android中不起作用
- python - 每次我完成一行时,俄罗斯方块都会变慢(Python,Turtle)
- java - 如何避免在 OutOfMemoryError 后停止实验?
- python - 提供的 API 密钥无效/Geocoding-Python
- javascript - 如何获取任意目录中任意文件的节点包搜索路径