对。。。。。所以我很困惑。此错误所基于的代码函数是,用户提交了一个包含指定数据的csv文件。Django将处理数据处理并将提交的数据添加到MySQL数据库中。在调试一些处理错误,并确保我定义的所有列表与csv文件头顺序匹配的过程中,Django的模型.保存()功能不起作用。所以我打开了异常并将其打印到控制台,在那里我得到以下错误:
编辑:将此值更新为实际错误结果值:
[u"'F1216-07a' value must be a decimal number."]
其中“value1”是要输入CharField定义字段的数据值。都是我的型号.py文件定义为string,MySQL数据库表通过PHPMyAdmin将此字段定义为char(N)。我猜这是作为参考的字段的模型定义:
x_version = models.CharField(choices=X_VERSION_CHOICES, max_length=32, blank=True, verbose_name='By X Field Version')
以下是选择的示例定义:
X_VERSION_CHOICES = (
('value1', 'value1'),
('value2', 'value2'),
)
此字段的值必须是预定义的字符串选项之一,因此没有任何选项可以将此值更改为十进制值。当定义的类型正确时,为什么Django会显示这个错误?会不会是因为这些常量是如何定义的?你知道吗
编辑:我认为这是一个不言自明的问题,但这里有一个代码示例模型。保存()方法在处崩溃。你知道吗
try:
....
# Value in this reconciliation_required db field must be set as
# "1" for true, which in test file it is.
if contracts[line['contract_no']].reconciliation_required:
# pass SampleDesignParameters the parameter dictionary and
# create line_parameters
line_parameters = SampleDesignParameters(**para_dict)
line_parameters.contract = contracts[line['contract_no']]
line_parameters.name = 'Auto-Created'
line_parameters.save()
line_sample.parameters = line_parameters
except Exception as e:
print e
# .... more code that generates warnings here
其中para_dict是一个字典,其中键作为数据库命名字段,其值是用户为该字段输入的数据。我已经在控制台上打印了dict,所以对于键和数据字段,它们都会相应地排列起来。至于模型本身,它的。。。你知道吗
class SampleDesignParameters(DesignParameters):
parent_template = models.ForeignKey('DesignParameters', related_name='parent', blank=True, null=True)
...
class DesignParameters(models.Model):
id = models.AutoField(primary_key=True)
....
# This field that Django has errors saving on:
f1216_version = models.CharField(choices=F1216_VERSION_CHOICES, max_length=32, blank=True, verbose_name='BY ASTM F1216 VERSION')
....
以及该字段的适当常数,其格式与虚拟字段的格式基本相同:
F1216_VERSION_CHOICES = (
('F1216-07a', 'F1216-07a'),
('F1216-09', 'F1216-09'),
)
最可能的解释是,不知何故,该值被保存到模型的错误字段中。你能捕捉错误并检查值吗?或者可能有一个可能的字段,也可能是CSV中缺少值的坏行,所以它们被移位了。你知道吗
相关问题 更多 >
编程相关推荐