Django - 使用order_with_respect_to属性

时间:2015-08-24 12:24:34

标签: python django postgresql django-models django-orm

您好我有模型对象列表:my_objects,应保存在数据库中。 此模型在order_with_respect_to类中具有Meta属性。

当我尝试bulk_create此列表时,我得到了:

  

列“_order”中的空值在bulk_create

期间违反了非空约束

当我只是迭代元素并在每个元素上调用save()时。一切都很好,但这样的顺序数据库访问并不能满足我......

我试图调用signals.pre_save.send函数,但这并没有改变这种情况。

当我在_save_table的每个签名元素上调用my_objects时,这是有效的,但_save_tablesave()方法中最重的部分,所以我什么都没得到。 ..

是否有可能只使用一个数据库连接来保存批量的django对象?

我正在使用postgresql

2 个答案:

答案 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引用。