Django执行makemigrations报错:CharField未定义max_length属性
解决Django模型中CharField未定义max_length的错误
错误原因
错误提示(fields.E120) CharFields must define a 'max_length' attribute明确说明:Django的CharField字段必须强制指定max_length参数,你定义的ConcerModel.lenght字段未设置该参数,导致系统检查不通过。
解决步骤
为CharField添加max_length参数
修改ConcerModel中的lenght字段,补充max_length属性(值根据实际存储内容的长度需求设置,示例用50):lenght = models.CharField(max_length=50)可选:修正字段拼写错误
注意到字段名lenght是拼写错误,正确拼写应为length,建议修正以避免后续开发中的混淆:length = models.CharField(max_length=50)可选:选择更合适的字段类型
如果该字段用于存储演唱会时长(如"120分钟"或时间间隔),使用CharField并非最优选择,推荐使用更贴合场景的字段类型:- 若存储时间间隔(支持天、时、分、秒的精确时长):
length = models.DurationField() - 若存储整数形式的时长(如分钟数):
length = models.IntegerField()
- 若存储时间间隔(支持天、时、分、秒的精确时长):
修正后的完整模型代码示例
class ConcerModel(models.Model): Name = models.CharField(max_length=100) singerName = models.CharField(max_length=100) # 已修正拼写并添加max_length length = models.CharField(max_length=50) def __str__(self): return self.singerName class locationModel(models.Model): Name = models.CharField(max_length=100) Address = models.CharField(max_length=500) phone = models.CharField(max_length=12) capacity = models.IntegerField() def __str__(self): return self.Name
修改完成后,重新执行以下命令即可完成迁移:
python manage.py makemigrations python manage.py migrate
内容的提问来源于stack exchange,提问作者Amirhosein Nazari
相关产品推荐
相关产品推荐

