首页 > 解决方案 > 字段留空时出错:以 10 为基数的 int() 的文字无效

问题描述

我正在数据库中保存一篇新文章。这是我使用的简化脚本:

class Article(models.Model):
    name = models.CharField(max_length=255)
    rating = models.PositiveSmallIntegerField(blank=True, null=True)

然后这是我尝试创建新记录的方法:

article = Article(
    name = request.POST['name'],
    rating = request.POST['rating'],
)
article.save()

然而,问题是评级并不总是固定的。该字段可以为空,所以没问题。但是,此时如果该字段为空,它会返回错误:int() 以 10 为底的无效文字。

我基本上想说:

我是 Python 新手,不知道如何实现这一点。

标签: pythondjango

解决方案


最简单的方法是捕获错误,然后在 except 块中将值设置为 None。

try:
    rating = int(request.POST['rating'])
except ValueError:
    rating = None

article = Article(
    name = request.POST['name'],
    rating = rating,
)
article.save()

推荐阅读