Django:如果我在 admin.py 中有正确的导入,为什么我在 shell 中出现 NameError

Django: Why im getting NameError in shell if I have correct import in admin.py

我真的不明白为什么我在 shell 中尝试 运行 Post.objects.all() 时得到 NameError。(通过使用 django_extensions)

我进行了迁移,我在数据库上看到 posts_post table(工作正常),我可以在本地服务器上的 运行ning 应用程序中执行 CRUD 操作。

下面是我的代码和错误信息。

发布应用程序

admin.py:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

settings.py:

INSTALLED_APPS = [
    ...
    'django_extensions',
    'posts.apps.PostsConfig'
]

shell

Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 Post.objects.all()
NameError: name 'Post' is not defined

首先要导入模型,所以写成如下:

from some_app_name.models import Post
Post.objects.all()

并且不要写 from .models import Post 因为它需要 appname。

示例:如果应用程序名称是 posts 那么您应该写:

from posts.models import Post
Post.objects.all()