django - Django ArrayField 没有正确存储数据
问题描述
我今天偶然发现了一个奇怪的问题,我无法在 django 中正确地将项目添加到 ArrayField() 中。该文档很简单:https ://docs.djangoproject.com/en/3.1/ref/contrib/postgres/fields/#arrayfield
这是我的模型:
class AppealStateChangeLog(models.Model):
agent = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='appeal_change_log_appeal_id',
)
codes = ArrayField(
models.CharField(max_length=10, blank=True),
default=list
)
我无法添加这样的代码
# some where in code
codes = ['11111','22222','33333']
c= AppealStateChangeLog(
agent=appeal.agent,
codes=[str(a) for a in codes] if codes else []
)
c.save()
此代码仅添加['11111']
在代码字段中,我期待所有三个值。
奇怪的是,当我尝试更新它成功更新的值时:
item = AppealStateChangeLog.objects.get(id=123)
codes = ['11111','22222','33333']
item.codes = codes
item.save()
这将存储所有三个值。
我什至尝试使用 AppealStateChangeLog.objects.create() 方法创建,但它只添加数组的第一个值,即 ['11111']。
Postgres 版本:12 django 版本:1.10(我知道这是一个旧系统 :))
解决方案
推荐阅读
- swift - 如何在 iOS 12 中获得更高的 GPS 精度
- python - 如果熊猫末尾有“-”符号,则将值转换为负浮点数
- perl - Perl 中的“不是数组引用”
- metpy - 使用 Metpy 和 Pyart 绘制 Nexrad 2 级文件,坐标计算
- scheme - 如何将字符串转换为方案中的整数列表?
- c# - 如何使用组合框从 xml 文件中获取所需信息到列表框?
- javascript - 将动态生成的选中复选框的值传递给 ASP.NET MVC 中的方法
- python - networkX中无向图的参数传递闭包
- javascript - react-testing-library cleanup 在代码沙箱中不起作用
- reactjs - Material-UI Paper 组件不使文本居中