Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不在数据库中创建表?_Python_Django - Fatal编程技术网

Python 为什么不在数据库中创建表?

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

请帮忙解决这个问题

我创建了一个带有相关字段(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),
    )
问题是在运行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": "М"
        }
    }   
]
命令python
manage.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