首页 > 解决方案 > 为什么在 Django 中的索引处保存查询集元素不起作用?

问题描述

我试图在我的查询集的特定索引处保存一个对象,但它似乎不起作用。

我有一个名为 Customer 的模型,我希望将名为 first_name 的字段从 None 更改为某些内容,例如“aa”,我想为索引 0 执行此操作。

代码 1

customers = Customer.objects.filter(first_name=None)
customers[0].first_name = 'aa'
customers[0].save()

代码 2

customers = Customer.objects.filter(first_name=None)
customer = customers[0]
customer.first_name = 'aa'
customer.save()

代码 1 不起作用,但代码 2 起作用。为什么代码 1 不起作用?

标签: djangodjango-queryset

解决方案


以下查询返回多个查询集:

customers = Customer.objects.filter(first_name=None)

当你使用

customers[0].first_name = 'aa'

您指示 django 首先设置first_name具有值的属性(您引用 [0] 的第一个客户)aaacustomers

当你使用

customer = customers[0]

这意味着您首先将对象分配给客户,customer以便您可以为对象分配值。


推荐阅读