python - 无效的默认值 - Django 和 python

标签 python django

我有一个模型:

class Project(models.Model):
   project_id = models.CharField(max_length=200)
   project_name = models.CharField(max_length=200)
   description = models.CharField(max_length=20)
   PROJECT_TYPE_CHOICES = (
      ('E-Commerce','E-Commerce'),
      ('Business','Business'),
   )

  APPLICATION_TYPE_CHOICES = (
      ('Android','Android'),
      ('iOS','iOS'),
      ('Windows','Windows'),
  )
 project_type = models.CharField(max_length=2, choices=PROJECT_TYPE_CHOICES, 
 default='E-Commerce')
 application_type = models.CharField(max_length=3, 
 choices=APPLICATION_TYPE_CHOICES, default='Windows')

 def __str__(self):
    return self.project_name

当我进行 makemigrations 时,它工作正常。但在迁移时显示以下错误

django.db.utils.OperationalError: (1067, "Invalid default value for 
'application
_type'")

最佳答案

您的 application_type 字段的大小仅为 3 个字符,但您的默认值(和其他值)超出了该限制。只需将其扩展到 7 个字符即可。 project_type 字段也是如此。您将需要重新创建迁移。

project_type = models.CharField(max_length=2, choices=PROJECT_TYPE_CHOICES, default='E-Commerce')
application_type = models.CharField(max_length=3, choices=APPLICATION_TYPE_CHOICES, default='Windows')

现在我看看它,我认为您混淆了 max_length 所指的内容。它是以字符为单位的值的大小,而不是可能的选项数量。

关于python - 无效的默认值 - Django 和 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44154437/

相关文章:

python - 使用名称列表定义变量

python - 使用 pandas 将索引列添加到 DataFrame

python - 这个 Python 字符串中的 {0} 是什么意思?

django - 我可以从另一个 View 中调用一个 View 吗?

python - 将多个 View 优化为一个 View - Django

django - 在 Django 模板中渲染字典

python - Django 和 Postgresql 运算符不存在 : integer = character varying

python - 如何避免覆盖 Python 中系统库的属性?

django - unique_together 外键对象属性

Python Bottle 框架错误 500 : can't find template in Daemon mode