我有一对一对一的关系,比如说:
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列表。
答案 0 :(得分:0)
如果已存在相应的Place
个对象,您可以遍历位置,初始化Restaurant
个对象,然后批量创建它们。
restaurants = [
Restaurant(place=place) for place in Place.objects.all()
]
Restaurant.objects.bulk_create(restaurants)
它仍会运行查询以访问Place,因此如果您想要O(1)查询,则需要使用原始SQL。