我有一个模型:
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/