使用批量同时插入两个相关对象_

2024-09-29 01:38:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我确实需要创建和保存多个地方,在我使用批量创建的单个查询中有多个餐馆,但不保存。请注意位置,只保存没有F.K的餐馆

我成功地在循环中分别创建了它们,并将它们逐个保存,这会导致太多的DB查询。place字段的id为autoincrement

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

    def __str__(self):
        return "%s the place" % self.name

class Restaurant(models.Model):
    place = models.OneToOneField(
        Place,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

## what I tried
restaurants = []

place1 = place(name = 'name1',address ='address1')
restaurant1 = restaurant(place=place1, serves_hot_dogs=True,serves_pizza=False)
restaurants.append(restaurant1)

place2 = place(name = 'name1',address ='address1')
restaurant2 = restaurant(place=place1, serves_hot_dogs=True,serves_pizza=False)
restaurants.append(restaurant2)

restaurant.bulk_create(restaurants,ignore_conflicts=True)


预期结果::将获取包含place f.k的餐厅对象 实际结果:只有没有地点对象的餐厅F.K


Tags: namefalsetrueaddressmodelsplacerestaurantclass