Django ValueError:无法将字符串转换为float
即使我把这行放在我的settings.py中:
LANGUAGE_CODE = 'pt-br' TIME_ZONE = 'America/Sao_Paulo' USE_I18N = True USE_L10N = True USE_TZ = True DECIMAL_SEPARATOR = ',' DATE_INPUT_FORMATS = ['%d/%m/%Y'] DATE_FORMAT = r'd/m/Y' 如此处所述:https://docs.djangoproject.com/en/1.10/ref/settings/#decimal-separator 即使将L10N设置为False,它也无法识别(尽管语言代码应该已将小数点分隔符设置为逗号) Django仍然不会将逗号识别为小数点分隔符 实际错误:
该字段只是一个默认的FloatField,我没有使用表单. 什么可能导致它无法识别逗号? 这是views.py代码: def new_object(request): data = json.loads(request.body.decode("utf-8")) model_name = data.get('model') model = apps.get_model(app_label='cadastroimoveis',model_name=model_name) obj = model(**data.get('fields')) obj.save() 发送的请求只是一个JSON,字段为字符串 编辑:我刚检查,甚至没有DATE_INPUT_FORMATS它工作,它仍然期望默认值 解决方法
问题是您似乎将模型字段与表单字段混淆.表单字段提供本地化,它的工作原理:
>>> from django.db.models.fields import FloatField >>> from django.forms.fields import FloatField as FloatFormField >>> model_field = FloatField() >>> form_field = model_field.formfield(localize=True) >>> isinstance(form_field,FloatFormField) True >>> form_field.to_python('123,123') 123.123 模型字段不: >>> model_field.to_python('123,123') ValidationError: [u"'123,123' value must be a float."] 模型字段没有记录为支持本地化,我在 行obj = model(** data.get(‘fields’))表明您根本没有使用表单,只是使用JSON数据源并将其直接撞击到模型中.因此,我认为更好的选择是预处理JSON数据,因为Django似乎不支持您正在寻找的内容. 您可能希望使用 >>> from django.utils.formats import sanitize_separators >>> sanitize_separators('123,123') '123.123' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |