请帮助解决问题。
我创建了一个带有相关字段的模型(foreignkey)。但我不能在数据库中创建一个表。
模特:
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),
)
问题是在运行控制台命令之后:
python manage.py syncdb
我收到以下错误消息:
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: drummersaransk_userprofile
initial_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": "М"
}
}
]
命令python manage.py test UserProfile
输出:ImportError:
没有名为'UserProfile'的模块
答案 0 :(得分:0)
这里有bug:
class UserProfile(User):
nickname = models.CharField(
'Отображаемое имя', #bug, is it verbose_name?
max_length=30,
blank=False,
)
修正:
class UserProfile(User):
nickname = models.CharField(
verbose_name='Отображаемое имя',
max_length=30,
blank=False,
)
答案 1 :(得分:0)
Django' syncdb
命令永远不会执行会破坏数据的SQL;由于创建和编辑外键就是这样一种操作,因此不能使用syncdb
。
如果删除表格,syncdb
将重新创建它们。
如果您使用的是django 1.7,则可以使用database migrations,或者使用south
为django版本提供迁移< 1.7
正如您现在正在开发的那样,简单地删除数据库并重新开始可能更容易。
另请注意,如果您在代码中使用除latin-1之外的任何内容,则需要define your file encoding,并且您仍然使用Python版本2.
答案 2 :(得分:0)
尝试删除数据库,然后再次创建并使用syncdb
或使用南迁移
python manage.py schemamigration UserProfile --auto