在将关系添加到Django中的数据库之前添加关系

时间:2018-10-17 11:22:06

标签: django django-models foreign-keys

如果我在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中是否已经有解决方案

1 个答案:

答案 0 :(得分:0)

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