Django:无法将空表单字段保存到数据库 - 以 10 为基数的 int() 的无效文字:''

Posted

技术标签:

【中文标题】Django:无法将空表单字段保存到数据库 - 以 10 为基数的 int() 的无效文字:\'\'【英文标题】:Django: Can't save empty form field to database - invalid literal for int() with base 10: ''Django:无法将空表单字段保存到数据库 - 以 10 为基数的 int() 的无效文字:'' 【发布时间】:2014-04-14 05:58:43 【问题描述】:

很多人报告了这种类型的错误,但到目前为止,没有一个修复对我有用。我有一个模型,它有一个允许空值的 IntegerField:

def SomeModel(models.Model):
    ...
    price_sell = models.IntegerField(null=True)
    ...

然后我有一个这样的表格:

class SomeForm(forms.Form):
    ...
    price_sell = forms.IntegerField(required=False)
    ...

当将此字段留空并调用 save 方法时,我收到 invalid literal for int() with base 10: '' 错误。我尝试了很多与空白和空参数有关的事情,但到目前为止没有运气。

我的解决方案是这样做是我的views.py:

if form.is_valid():
    if(request.POST['price_sell'] == ''):
        price_sell = None
    ...

但我确信有一种更优雅的方法可以做到这一点。还是没有?

我正在使用 SQLite db 在 Windows 上运行 Django 1.6。

【问题讨论】:

@Charles 我对我的问题进行了编辑。 【参考方案1】:

从表单中的cleaned_data 中获取数据。 IntegerField 会给你你想要的。 form.cleaned_data['price_sell']

【讨论】:

以上是关于Django:无法将空表单字段保存到数据库 - 以 10 为基数的 int() 的无效文字:''的主要内容,如果未能解决你的问题,请参考以下文章

Django:表单未保存到数据库

使用注册表单添加到自定义用户字段(django)

我无法将表单数据保存到 django 中的数据库

在 Django 模型中保存时区

如何使用django自定义表单保存多个到多个字段

Django - CreateView 不使用嵌套表单集保存表单