Django: sqlite3.操作错误:python shell中没有这样的表



我正在遵循一个django博客教程。当我使用 python manage.py shell 并尝试在 shell 中执行以下命令时

from mainsite.models import Category, Tag
c = Category(name='category test')
c.save()

发生此错误:

sqlite3.OperationalError: no such table: mainsite_category

这是我mainsite文件夹中的 model.py,我认为是正确的:

from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
    name = models.CharField(max_length=100)
def __str__(self):
    return self.name

我已经尝试过manage.py makemigrationsmanage.py migrate并且可以成功地使用manage.py runserver来查看网站。那么这里出了什么问题呢?

编辑:这是我在settings.py安装的应用程序

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mainsite',
]

和我的项目结构

|____djangoBlog
| |______init__.py
| |____settings.py
| |____urls.py
| |____wsgi.py
|____mainsite
| |______init__.py
| |____admin.py
| |____apps.py
| |____models.py
| |____tests.py
| |____urls.py
| |____views.py
|____manage.py
|____README.md
|____requirements.txt
|____templates
| |____blog
| | |____index.html

编辑:当我运行python manage.py makemigrationspython manage.py migrate时,输出如下:

No changes detected
Operations to perform:
    Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
    No migrations to apply.

UPD:

由于您的项目结构mainsite应用程序中缺少migrations文件夹,这意味着您尚未为该应用程序创建迁移。 运行python manage.py makemigrations mainsite,然后python manage.py migrate

从文档中:

若要将迁移添加到没有 migrations 目录的应用,请使用应用的app_label运行makemigrations

是的,您可以通过简单的实例创建来创建模型。从文档创建对象。

原答案:

您需要确保已将'mainsite'应用包含在 settings.py INSTALLED_APPS中,然后运行迁移。之后,您应该能够执行以下操作:

c = Category.objects.create(name='category test')
c.save()

@Owen,根据vishes_shell的回答,你必须做:

python manage.py makemigrations mainsite

第一次为了生成将包含迁移的文件夹迁移,那么您可以只做

python manage.py makemigrations

将来,如果您添加新应用程序,请不要忘记在使用第二个命令之前再次发出第一个命令(按应用程序名称更改"主站点"(。

似乎

在您的models.py中,您需要在name处缩进:

class Category(models.Model):
    name = models.CharField(max_length=100)

最新更新