Python 为什么不在数据库中创建表?
请帮忙解决这个问题 我创建了一个带有相关字段(foreignkey)的模型。但我无法在数据库中创建表 型号:Python 为什么不在数据库中创建表?,python,django,Python,Django,请帮忙解决这个问题 我创建了一个带有相关字段(foreignkey)的模型。但我无法在数据库中创建表 型号: class Status(models.Model): status = models.CharField( max_length=40, blank=False, ) class Gender(models.Model): gender = models.CharFi
class Status(models.Model):
status = models.CharField(
max_length=40,
blank=False,
)
class Gender(models.Model):
gender = models.CharField(
max_length=10,
blank=False,
)
class UserProfile(User):
nickname = models.CharField(
'Отображаемое имя',
max_length=30,
blank=False,
)
gender = models.ForeignKey(
Gender,
verbose_name='Пол',
blank=True,
null=True,
#default=Gender.objects.get(pk=1),
)
status = models.ForeignKey(
Status,
verbose_name='Статус',
blank=True,
null=True,
#default=Status.objects.get(pk=1),
)
问题是在运行console命令后:
python manage.py syncdb
我收到以下错误消息:
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: drummersaransk_userprofile
初始_data.json:
[
{
"model": "drummersaransk.Status",
"pk": 1,
"fields": {
"status": "Барабанный бог"
}
},
{
"model": "drummersaransk.Status",
"pk": 2,
"fields": {
"status": "Профессиональный барабанщик"
}
},
{
"model": "drummersaransk.Status",
"pk": 3,
"fields": {
"status": "Барабанщик"
}
},
{
"model": "drummersaransk.Status",
"pk": 4,
"fields": {
"status": "Барабанщик в прошлом"
}
},
{
"model": "drummersaransk.Status",
"pk": 5,
"fields": {
"status": "Играю на другом инструменте, но барабанщик в душе"
}
},
{
"model": "drummersaransk.Status",
"pk": 6,
"fields": {
"status": "Сочувствующий"
}
},
{
"model": "drummersaransk.Gender",
"pk": 1,
"fields": {
"gender": "Ж"
}
},
{
"model": "drummersaransk.Gender",
"pk": 2,
"fields": {
"gender": "М"
}
}
]
命令pythonmanage.py test UserProfile
outputs:ImportError:
没有名为“UserProfile”的模块
这里有一个bug:
class UserProfile(User):
nickname = models.CharField(
'Отображаемое имя', #bug, is it verbose_name?
max_length=30,
blank=False,
)
修正:
Django的
syncdb
命令永远不会执行会破坏数据的SQL;由于创建和编辑外键就是这样一种操作,因此不能为此使用syncdb
如果删除这些表,syncdb
将重新创建它们
如果您使用的是django 1.7,则可以使用,或者使用为django版本<1.7提供迁移的
当您现在正在开发时,简单地删除数据库并重新开始可能会更容易
另外请记住,如果代码中使用的不是拉丁语-1,而是Python版本2,则需要删除数据库。尝试删除数据库,然后再次创建数据库并使用syncdb 或者利用南迁
python manage.py schemamigration UserProfile --auto
最初创建表之后,您是否更改了模型?我正在更改现有表。然后尝试删除该表并运行syncdb。此外,我通过initial_data.json(编辑文章)初始化了模型。您是否创建了新数据库
python manage.py syncdb--traceback
您将获得更多信息。在控制台中显示命令python manage.py syncdb--traceback后,会显示相同的错误消息:django.db.utils.OperationalError:没有这样的表:drummersaransk_userprofile您是否删除了旧数据库,然后创建了新数据库?是的。im删除了数据库并创建了新的数据库。其中命令python manage.py test UserProfile outputs:ImportError:No module name'UserProfile'我试图从数据库中删除所有表。但问题仍然存在,我试图从数据库中删除所有表。但是问题仍然是删除整个数据库并重新创建它。是否尝试了schemamigration?是否在设置已安装的应用程序中添加了userprofile?“是否在设置已安装的应用程序中添加了userprofile”。为什么?错误显示没有模块名userprofile,所以我猜您的模块名是userprofile,但它找不到,所以可能您在某些地方遗漏了它。你有没有试过“计划化”?
python manage.py schemamigration UserProfile --auto