首页 > 解决方案 > 无法更新 Django ArrayField

问题描述

我的 model.py 中有一个类

class Views(models.Model):
    X = ArrayField(models.IntegerField(blank = True))
    Y = ArrayField(models.DecimalField(blank = True,max_digits=2, decimal_places=2))

我将 X 和 Y 的默认值输入为 [0,0,0,0,0,0,0,0,0,0]。但是当我尝试更新 X 或 Y 数组的值时,它并没有真正得到更新。

外壳命令是:

>>> from productsHome.models import Views
>>> x = Views.objects.all()
>>> x
<QuerySet [<Views: Views object (5)>]>
>>> x[0]
<Views: Views object (5)>
>>> x[0].X
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> x[0].X = [1,2,2,1]
>>> x[0].X
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>>    

为什么我的 x[0].X 没有更新?

标签: pythondjango

解决方案


为什么我的没有x[0].X更新?

因为您进行了新查询,从而检索了数据库中的值。为了持久更新(在数据库端),您需要保存已更新的对象。例如:

x = Views.objects.all()
x0 = x[0]
x0.X = [1,2,2,1]
x0.save()

# …
print(x[0].X)

推荐阅读