Django bulk_create с Null значением
models.py
class control(models.Model):
amount = models.IntegerField()
driver = models.ForeignKey(driver, on_delete=models.CASCADE, null=True, blank=True)
views.py
controlValues = [
(1,1,1),
(2,8,None)
]
control.objects.bulk_create([
control(
id = i[0],
amount = i[1],
driver = driver(id = i[2])
) for i in controlValues], ignore_conflicts=True
)
Получил ошибку: bulk_create() запрещено для предотвращения потери данных из-за несохраненного связанного объекта 'driver'. Как я могу установить Null для драйвера? Я использую mysql.
Если значение None
, вы не должны строить driver
модель с этим объектом, а работать с:
control.objects.bulk_create([
control(
id=id,
amount=amount,
driver=driver(id=dr_id) if dr_id is not None else None
) for id, amount, dr_id in controlValues],
ignore_conflicts=True
)
или гораздо проще:
control.objects.bulk_create([
control(
id=id,
amount=amount,
driver_id=dr_id
) for id, amount, dr_id in controlValues],
ignore_conflicts=True
)
Примечание: Модели в Django пишутся в PascalCase, а не snake_case, поэтому вы можете переименовать модель из
вdriver
Driver
.