Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django save()不更新数据库中的表_Django_Database_Django 2.2 - Fatal编程技术网

Django save()不更新数据库中的表

Django save()不更新数据库中的表,django,database,django-2.2,Django,Database,Django 2.2,每次用户访问一个页面时,我必须更新数据库中的2个表 这起作用了: order_order = OrderTable.no_objects.get(order_number=order_id) order_order.status = 'updated status' order_order.save() 这不起作用:(通过外键与第一个表相关) 有人能说出代码第二部分的错误吗。它不会更新数据库。每次编写订单项目[i]时,您都会进行单独的提取,并从数据库返回一个ItemsTable项目。这意味着

每次用户访问一个页面时,我必须更新数据库中的2个表

这起作用了:

order_order = OrderTable.no_objects.get(order_number=order_id)

order_order.status = 'updated status'
order_order.save()
这不起作用:(通过外键与第一个表相关)


有人能说出代码第二部分的错误吗。它不会更新数据库。

每次编写
订单项目[i]
时,您都会进行单独的提取,并从数据库返回一个
ItemsTable
项目。这意味着,如果设置该对象的
.qty=…
属性,它将被忽略,因为下一个
order\u项[i]
将触发新的获取。您的
order\u item[i].save()
会更新数据库中的记录,但会使用仅从数据库获取的值进行更新

最好是简单地迭代查询集,从而维护对相同
ItemsTable
对象的引用:

order_items = ItemsTable.objects.filter(order_id__order_number=order_id)
for i, order_item in enumerate(order_items):
        order_item.qty = i + 5
        order_item.qty_nextMonth = i + 30
        order_item.save()
order\u items=ItemsTable.objects.filter(order\u id\u order\u number=order\u id)
对于i,枚举中的订单项(订单项):
订单\项目数量=i+5
订单\项目数量\下个月=i+30
订购物品。保存()
这也更有效,因为在queryset上枚举会强制求值,因此可以一次获取所有对象


截至,您可以使用,批量更新对象的iterable。

通过使用
[i]
每次进行单独的提取。这是一个错误。”ItemsTable对象不可编辑。它应该是
order\u items
。您是否更改了使用
.get()
而不是
.filter()
?不,我使用的是filter。我不知道为什么它说filter()对象不可iterable。@sandeep:它并没有说,在某个地方你迭代了一个
ItemsTable
对象,所以类似于
的。。。在某些\u itemtableobject:
中,我很确定这不在这里发布的代码片段中。@sandeep:如果您保留对该对象的引用,例如
my\u obj=order\u items[I],它肯定会起作用;我的对象数量=42;my_obj.save()
order_items = ItemsTable.objects.filter(order_id__order_number=order_id)
for i, order_item in enumerate(order_items):
        order_item.qty = i + 5
        order_item.qty_nextMonth = i + 30
        order_item.save()