Django syncdb未为我的应用创建表
之前这个功能是正常的,现在却不行了。运行 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 “隐形”。我不能确切说为什么会这样,但这听起来有点熟悉。