簡體   English   中英

Django:控制台在CharField定義的字段上返回“值必須是十進制數”?

[英]Django: Console returns “value must be a decimal number” on a CharField defined field?

對.....所以我對此感到困惑。 此錯誤所基於的代碼函數是用戶提交充滿指定數據的csv文件。 Django將處理數據處理並將提交的數據添加到MySQL數據庫。 在調試一些處理錯誤,並確保我所有定義的列表與csv文件頭順序和所有匹配時,Django的Model.save()函數將無法正常工作。 所以我打開了異常並打印到控制台,我把它作為錯誤:

編輯:將此值更新為實際錯誤結果值:

[u"'F1216-07a' value must be a decimal number."]

其中'value1'是要輸入CharField定義字段的數據值。 我的models.py文件都定義為字符串,而PHP數據庫表通過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'),
)

此字段的值必須是預定義字符串選項之一,因此沒有任何選項可將此值更改為Decimal值。 當定義的類型正確時,為什么Django會顯示此錯誤? 是不是因為選擇常量被定義為?

編輯:我認為這是一個不言自明的問題,但這里是model.Save()方法崩潰的代碼示例。

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中的錯誤行,其值丟失,因此它們會被移位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM