Вставка связанных объектов одновременно, используя bulk_create - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно создать и сохранить несколько мест с указанными ресторанами в одном запросе. Я использую Bul_Create, но он не сохраняет. Обратите внимание на место и сохраняю только ресторан без FK

Я успешно создалотдельно в цикле и сохраняя их один за другим, что приводит к слишком большому количеству запросов к БД, у поля места есть идентификатор как автоинкремент

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)


ожидаемый результат :: получит объект ресторана с местом fk в нем актуальнымрезультат :: единственный ресторан без места размещения FK

...