You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Django的manage.py makemigrations报错,需修复models.py及数据填充问题

解决Django makemigrations失败的问题

嘿,我一眼就看到你的models代码里有几个关键问题导致了makemigrations报错,咱们来逐个解决:

1. 字段未正确实例化

在planning模型里,你定义的datedebut、datefin、nbrH这三个字段只写了字段类名,没有加括号()。Django的字段类型是类,必须通过调用构造函数(加括号)来创建实例,不然Django无法识别这些是有效的数据库字段——这是导致报错的核心原因。

2. 模型类命名不符合规范

Django社区惯例是模型类使用大驼峰命名法(首字母大写),比如把planning改成Planning,这样不仅代码更易读,也能避免和其他变量名冲突。

3. 字段命名的优化建议(非强制但推荐)

Python和Django推荐使用蛇形命名法(小写字母+下划线),比如NomEquipe改成nom_equipe,datedebut改成date_debut,这样代码风格更统一,也符合社区的最佳实践。


修正后的完整models.py代码

class Equipe(models.Model):
    nom_equipe = models.CharField(max_length=10, unique=True)
    description = models.CharField(max_length=10, unique=True)

    # 可选:添加__str__方法,让后台管理界面显示更友好
    def __str__(self):
        return self.nom_equipe

class Planning(models.Model):
    date_debut = models.DateField()
    date_fin = models.DateField()
    nbr_h = models.TimeField()

    def __str__(self):
        return f"{self.date_debut} 至 {self.date_fin}"

class Conseiller(models.Model):
    matricule = models.CharField(max_length=10, unique=True)
    nom = models.CharField(max_length=200)
    prenom = models.CharField(max_length=200)
    tel = models.CharField(max_length=200)
    mdp = models.CharField(max_length=200)
    email = models.EmailField(max_length=200)
    file = models.CharField(max_length=200)
    preavis = models.BooleanField(default=False)
    sup = models.CharField(max_length=200)
    equipe = models.ForeignKey(Equipe, on_delete=models.CASCADE)
    planning = models.ForeignKey(Planning, on_delete=models.CASCADE)

    def __str__(self):
        return f"{self.prenom} {self.nom}"

后续操作步骤

  1. 将你的models.py替换为上面的修正代码
  2. 运行命令:python manage.py makemigrations
  3. 再执行迁移:python manage.py migrate

另外补充个小提示:如果nbr_h是用来存储时长(比如工作了8小时),而不是具体时间点的话,建议使用DurationField替代TimeField,这样更贴合业务场景哦~

内容的提问来源于stack exchange,提问作者Amine El Mandour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:35:47