【问题标题】:Django save blank valueDjango保存空白值
【发布时间】:2018-05-13 09:20:41
【问题描述】:

我在 df 中有许多未知值,其中的单元格用字符 '---' 填充

我想告诉 Django,如果它发现不是任何类型的数字(整数 / 十进制 / 浮点数),则将该字段的值留空。我也希望默认为空白,但似乎也不允许这样做。

我的模型如下所示:

    value = models.FloatField(
    # default=blank,
    null=True,
    validators=[MinValueValidator(0)],
)

我的视图调用这样的函数:

    if (value == "---"):
        value = None

    MyModel(
        value=value,
    ).save()

我的表单如下所示: 从 django 导入表单

从 .models 导入 WeatherStatistics

class WeatherStatisticsForm(forms.ModelForm):
    class Meta:
        model = WeatherStatistics
        fields = [
        "value",
        ]

如何将空白值发布到数据库?

【问题讨论】:

  • 你得到一个错误?什么不工作?
  • 我收到此错误:NOT NULL 约束失败:weatherstats_weatherstatistics.value
  • 奇怪,这不应该给你 NOT NULL 约束错误。你确定你已经运行了所有的 makemigrations 和 migrations 吗?请注意,在验证您的表单时,您不允许使用空白(因为您没有设置空白=True),并且您会遇到验证错误,即值应该 >=0,如下面的答案中所述。

标签: python django database python-3.x model


【解决方案1】:

如果您想在 db 中保存 None 值,则必须删除 MinValueValidator

类 MinValueValidator(min_value, message=None)

如果 value 小于,则使用“min_value”代码引发 ValidationError 比最小值

In [1]: a = None

In [2]: a < 0
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-29fc65191789> in <module>()
----> 1 a < 0

TypeError: unorderable types: NoneType() < int()

【讨论】:

  • true,但这仅在验证时产生,而不是在保存到数据库时产生。他应该还能做到MyModel( value=None, ).save()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2016-06-29
  • 2020-06-11
相关资源
最近更新 更多