使用默认值而非空值填充模型字段

时间:2018-11-29 20:22:33

标签: python django sqlite

我的模型定义如下:

class Activity(models.Model):
    country = models.CharField(max_length=100, default="Unknown")

country字段是通过JSON响应填充的,但有时不可用。

我目前正在

  

django.db.utils.IntegrityError:NOT NULL约束失败:   explorer_api_activity.country

我尝试了null=Trueblank=True的不同组合,并取消了默认设置,并且删除了迁移和数据库,但无济于事。

我想在遇到null时用“未知”填充该字段。我该怎么做?

1 个答案:

答案 0 :(得分:1)

怎么样:

var list = input => {
      let array = input.split('').map(ch => ch.toLowerCase().charCodeAt(0) - 96);

      for(let el in array) {
        if(array[el] < 1 || array[el] > 26)
          array.splice(el,1);
      }
      return array.toString().replace(/,/g, ' ');
    }

    console.log(list("The sun!!!set sets at twelve o' clock."));
    // output
    //20 8 5 19 21 14 -63 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 -64 3 12 15 3 11

更新

如果您坚持保持当前模型(不要使该字段可为空或在其中包含一些字符串),那么每当将json数据保存到模型中时,请确保将字符串存储在国家/地区中。像这样:

country = models.CharField(max_length=100, null=True, default=None)

当前,每当保存模型时,当json数据没有国家/地区时,您就将YourModel.objects.create(other_field='data', country=json_data.get('country', "Unknown")) 作为参数发送。这就是为什么您得到None的原因。