Django bulk_create一对一对象

时间:2018-02-11 15:59:21

标签: python django

我有一对一对一的关系,比如说:

from django.db import models
class Place(models.Model):
    name = models.CharField(max_length=50)
class Restaurant(models.Model):
    place = models.OneToOneField(Place, on_delete=models.CASCADE)

假设我想(在我看来)一次创建多个Restaurant,但这些餐馆还没有创建相关的Place(所以我基​​本上想要创建一对对象)。

是否可以以这种方式使用bulk_create(即仅使用O(1)查询)?

不幸的是我遇到了MySQL(而不是postgre),所以我不能bulk_create Place并访问该ID列表。

1 个答案:

答案 0 :(得分:0)

如果已存在相应的Place个对象,您可以遍历位置,初始化Restaurant个对象,然后批量创建它们。

restaurants = [
    Restaurant(place=place) for place in Place.objects.all()
]

Restaurant.objects.bulk_create(restaurants)

它仍会运行查询以访问Place,因此如果您想要O(1)查询,则需要使用原始SQL。