您好我有模型对象列表:my_objects
,应保存在数据库中。
此模型在order_with_respect_to
类中具有Meta
属性。
当我尝试bulk_create
此列表时,我得到了:
列“_order”中的空值在bulk_create
期间违反了非空约束
当我只是迭代元素并在每个元素上调用save()
时。一切都很好,但这样的顺序数据库访问并不能满足我......
我试图调用signals.pre_save.send
函数,但这并没有改变这种情况。
当我在_save_table
的每个签名元素上调用my_objects
时,这是有效的,但_save_table
是save()
方法中最重的部分,所以我什么都没得到。 ..
是否有可能只使用一个数据库连接来保存批量的django对象?
我正在使用postgresql
。
答案 0 :(得分:1)
这只是一个字段,您可以手动设置“ _order”,也可以在bulk_create之前进行计算。
# Model
class Product(models.Model):
name = models.CharField(max_length=255)
# Bulk create example
# Data
product_data_list = [{"name": "Apple"}, {"name": "Potato"}]
# Add "_order" field for each product
for index, product_data in enumerate(product_data_list):
product_data["_order"] = index
# Create
Product.objects.bulk_create(Product(**product_data) for product_data in product_data_list)
答案 1 :(得分:0)
来自文档: https://docs.djangoproject.com/en/1.8/ref/models/querysets/#bulk-create
如果模型的主键是AutoField,它不会像save()那样检索和设置主键属性。
我猜你的id是自动增量的,现在它没有被保存,这被_order引用。