在 Django 專案中,我試圖存盤計算出的十進制值,但由于某些奇怪的原因而失敗。我的模型看起來像:
class FancyModel(models.Model):
fancy_field = models.DecimalField(max_digits=10, decimal_places=3, null=True, blank=True)
有時,實際上經常是,它在保存時崩潰:
django.db.utils.IntegrityError: CHECK constraint failed: myapp_fancy_model
經過一番挖掘,我發現這是由此驗證引起的:
django.core.exceptions.ValidationError: {'fancy_field': ['Ensure that there are no more than 2 decimal places.']}
我已經拋棄了實際模型的值,對我來說似乎沒問題:
{'fancy_field': 3.26 }
我看不出這會如何失敗。有時它作業正常,有時它會崩潰。我嘗試使用圓形方法,例如:
model_instance.fancy_model = round(floating_value, 2)
但它仍然失敗。
uj5u.com熱心網友回復:
您應該考慮更改從 3 到 2 傳遞的decimal_places 引數
uj5u.com熱心網友回復:
在注釋掉所有代碼,然后一行一行地重新添加后,我發現錯誤根本不是由小數欄位引起的,而是由一個得到負值的 PositiveIntegerField 引起的。model.full_clean() 根本沒有提到 PositiveIntegerField,所以這真的很奇怪。那是幾個小時我不會回來:-/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396501.html
