我正在编写自定义模板标记,错误发生在“未解析的参考模型”中 以下是我的blog_tags.py。
from django import template
from .models import Post
register = template.Library()
@register.simple_tag
def total_posts():
return Post.published.count()
我的目录树如下
blog/
__init__.py
models.py
...
templatetags/
__init__.py
blog_tags.py
我的模特中确实有一个Post类。
当我点击pycharm“install package Post”提示时,安装完成后,错误消失。 我想我是否必须这样做,这是由IDE安装包,每次当我想在我的模型中编写一个自定义标签演变的类?
答案 0 :(得分:3)
如果我正确解释您的项目结构,您的models
模块位于相对于blog_tags
的父包中。访问.models
会尝试在templatetags
包中找到该模块。
尝试将导入更改为:
from ..models import Post
答案 1 :(得分:1)
由于这是Django,并且在Django中,循环导入可能是一个问题,请考虑动态加载模型:
对于django 1.7+使用application registry:
from django.apps import apps
Post = apps.get_model('blog', 'Post')
对于早期版本:
from django.db.models.loading import get_model
Post = get_model('blog', 'Post')
注意:仅当“博客”是已安装的应用时才有效。
答案 2 :(得分:0)
使用app
命名空间导入模型而不是相对导入,以便维护标准结构。
from django import template
# blog is your app name
from blog.models import Post
register = template.Library()
@register.simple_tag
def total_posts():
return Post.published.count()
请检查django项目中与pycharm相关的here未解决的错误问题