热门标签:
Q:

具有Null值的django bulk_create

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(),以防止由于未保存的相关对象"驱动程序"而导致数据丢失。 如何为驱动程序设置Null? 我正在使用mysql。

原网址
A:

如果值为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

相似问题