Django syncdb未为我的应用创建表

5 投票
1 回答
6017 浏览
提问于 2025-04-15 22:40

之前这个功能是正常的,现在却不行了。运行 python manage.py syncdb 这个命令时,我的应用没有生成数据库表。

settings.py 文件中:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.myapp',
    'django.contrib.admin',
)

我可能哪里做错了呢?这个问题似乎和我在 models.py 文件中编辑模型的时间有关系,但这也可能只是巧合。我把我改动的那几行注释掉了,结果还是不行。

class MyUser(models.Model):
    user = models.ForeignKey(User, unique=True)
    takingReqSets = models.ManyToManyField(RequirementSet, blank=True)
    takingTerms = models.ManyToManyField(Term, blank=True)
    takingCourses = models.ManyToManyField(Course, through=TakingCourse, blank=True)
    school = models.ForeignKey(School)
#    minCreditsPerTerm = models.IntegerField(blank=True)
#    maxCreditsPerTerm = models.IntegerField(blank=True)
#    optimalCreditsPerTerm = models.IntegerField(blank=True)

更新:

当我运行 python manage.py loaddata initial_data 时,出现了一个错误:

DeserializationError: Invalid model identifier: myapp.SomeModel

之前加载这些数据是没问题的。这个错误是在数据文件中的第一个数据对象时就出现了。

解决方案:

通过删除这一行解决了问题:

from stringprep import bl

1 个回答

2

我敢打赌,你提到的那个 SomeModel 模型(不一定是 MyUser)可能有问题,导致它无法被 loaddata 导入。如果不是 SomeModel,那就是和 SomeModel 在同一个 models.py 文件里的其他模型有问题。

你试过运行 ./manage.py validate 吗?即使这个命令显示所有模型都没问题,有时候如果某个应用的 models.py 文件里有错误,整个应用可能会对 manage.py “隐形”。我不能确切说为什么会这样,但这听起来有点熟悉。

撰写回答