未解决的参考'模型'

时间:2017-04-29 13:59:41

标签: python django

我正在编写自定义模板标记,错误发生在“未解析的参考模型”中 以下是我的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安装包,每次当我想在我的模型中编写一个自定义标签演变的类?

3 个答案:

答案 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未解决的错误问题