我在AWS上部署了一个简单的Django应用程序。我使用的数据库是MySQL。该应用程序的大多数部分运行良好。但是当我提交表单并将表单中的数据存储到模型中时,恰好会出现问题。错误页面显示Data truncated for column 'temp' at row 1
。 temp
是这样的ChoiceField
:temp = forms.ChoiceField(label="temperature", choices=TEMP)
,在模型文件中temp
是CharField
,就像temp = models.CharField(max_length=2, choices=TEMP)
一样。错误发生在.save()
。我该如何解决这个问题?任何建议和帮助表示赞赏。顺便说一下,正如我所搜索的那样,截断问题的发生是因为要存储在数据库中的数据类型。但我仍然无法弄清楚如何修改我的代码。
答案 0 :(得分:2)
您遇到的错误是因为HIGH
,MEDIUM
,LOW
大于2个字符。重新定义您的选择,以便选择的值不应超过您的字段max_length=2
设置的字符数限制temp
:
TEMP = (
('H', 'High'),
('M', 'Medium'),
('L', 'Low'),
)
答案 1 :(得分:1)
你的专栏只有2个字符宽,但是你试图将TEMP
选项中的字符串'HIGH','MEDIUM','LOW'存储起来(每个元组的第一个值保存在数据库中) )。增加max_length
或为选择选择不同的值,例如TEMP = ( ('H', 'High'), ('M', 'Medium'), ('L', 'Low'), )
。
它在SQLite中运行良好,因为SQLite只是忽略了max_length
属性(和其他东西)。