字段为空时出错:以10为底的int()的无效文字

时间:2018-10-07 23:14:42

标签: python django

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

[[],[],[],[],[],[],[],[]]

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

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

但是,问题是评级并非始终设置。该字段可以为null,因此没有问题。但是,如果此字段现在为空,则返回错误:基数为10的int()的无效文字。

我想基本上说:

  • 如果设置了POST ['rating'],则使用它
  • 如果不是,则该字段应为null。

我是Python的新手,不确定如何实现此目标。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

假设POST是一本字典(我忘记了,已经有一段时间了),那么您可以使用以下内容将其一字排开:

rating = int(request.POST.get('rating', -1))
if rating == -1:
    rating = None

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