这种情况是必须填充一个DB,但是未知记录是否已经存在。主键是一个递增的值。 我考虑了三种技术来完成此任务,但想知道哪种方法最有效。
1。
Model.objects.get_or_create()
2。
Model.objects.update_or_create()
3。
if not Model.objects.filter().exists():
Model.objects.create()
根据Django文档,技术1和2在内部使用EAFP(比许可更容易请求宽恕),而技术3使用不太受欢迎的LBYL(飞跃前请先看)。但是,技术3避免检索或保存(未经修改)该对象(如果已存在)。分配的代价是否足以避免这种情况,还是查找成本超过了其余操作?
跟进:在大多数现有记录相对于大多数不存在记录的情况下,正确的方法会改变吗?