【问题标题】:Add relations before adding them to DB in django在将关系添加到 django 中的数据库之前添加关系
【发布时间】:2018-10-17 11:22:05
【问题描述】:

如果我在 django 中有这样的关系

class Reporter(models.Model):  
    pass

class Article(models.Model):
    reporter = models.ForeignKey(Reporter)

我想立即创建一个带有文章的新记者,我首先必须将记者save() 发送到数据库,然后我才能添加文章。

但有时,我想“离线”准备所有内容(在某种意义上,在将任何内容推送到数据库之前),例如创建一个 Reporter 对象,向其中添加文章,然后可能仍然修改 Reporter 对象的某些属性.

然后,当一切都完成后,我想将所有内容一起推送到数据库。但是当然,当我在调用Reporter.save() 之前使用Reporter.article_set.add() 时,我会得到一个错误,因为django 会尝试自动将文章和外键添加到数据库中。有什么办法可以防止这种情况,并准备我的对象,包括“离线”关系?

我自己的方法是,将set_articles 方法添加到Reporter,然后覆盖save() 方法,以便检查是否设置了任何文章并在保存Reporter 后添加它们

但在我开始即兴创作之前,我想知道 django 中是否已经有任何解决方案

【问题讨论】:

    标签: django django-models foreign-keys


    【解决方案1】:

    save() 方法接受可选的 commit 关键字参数,该参数接受 True 或 False。如果你用commit=False 调用save(),那么它将返回一个尚未保存到数据库的对象。在这种情况下,您可以在生成的模型实例上调用 save()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-11
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      相关资源
      最近更新 更多