D_P*_*D_P 7 python django django-models django-views
前端用户给出这样的输入值:['1','2','3']。我想同时更新多个对象bulk_update
,我尝试了这样的操作,但这给了我这个错误。
ValueError: All bulk_update() objects must have a primary key set.
通过这种类似的方式,我使用bulk_create
工作正常的方法创建了对象,但使用bulk_update
它却不起作用。
这里我想一次更新多个具有不同值的模型对象?
class PVariant(models.Model):
name = models.CharField(max_length=255)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
....
#views
quantity = request.POST.getlist('quantity')
#['1','2','3']
names = request.POST.getlist('names')
fields = ['name', 'price', 'quantity'..]
params = zip(names, quantity, weight,..)
variants = [PVariant(name=param[0],sku=param[1], quantity=param[2], weight=param[3],
product=product) for param in params]
PVariant.objects.bulk_update(variants, fields)
Run Code Online (Sandbox Code Playgroud)
编辑: 从客户端我在视图中获取此类数据。
['name1', 'name2'] names
['12', '1213.0'] field1
['12.0', '12.0'] field2
['1244', '1244'] field3
['11', '11'] field4
['12.0', '12.0'] field5
Run Code Online (Sandbox Code Playgroud)
Cha*_*nel -2
PVariant
更新之前应首先保存所有对象(调用save
方法)。就像是:
variants = []
for param in params:
inst = PVariant(display_name=param[0],sku=param[1], quantity=param[2], weight=param[3], product=product)
inst.save()
variants.append(inst)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5278 次 |
最近记录: |