Estoy escribiendo una etiqueta de plantilla personalizada y aparece el error "Modelos de referencia no resueltos". El siguiente es mi blog_tags.py.
from django import template from .models import Post register = template.Library() @register.simple_tag def total_posts(): return Post.published.count()Y mi árbol de directorios es el siguiente
blog/ __init__.py models.py ... templatetags/ __init__.py blog_tags.pyY tengo una clase Post en mis Modelos.
Y cuando hago clic en el mensaje de pycharm "instalar paquete Post", después de terminar de instalarlo, el error desaparece. Me pregunto si tengo que hacer lo mismo, que es instalar el paquete por el IDE, cada vez que quiero escribir una etiqueta personalizada evolucionada con clase en mis Modelos.
Si estoy interpretando correctamente la estructura de su proyecto, su módulo de models se encuentra en un paquete principal relativo a blog_tags . Acceder a .models intentaría encontrar el módulo dentro de su paquete templatetags .
Intente cambiar su importación a esto en su lugar:
from ..models import PostComo esto es Django y como en Django las importaciones circulares pueden ser un problema, considere cargar dinámicamente el modelo:
para django 1.7+ use el registro de la aplicación :
from django.apps import apps Post = apps.get_model('blog', 'Post')para versiones anteriores:
from django.db.models.loading import get_model Post = get_model('blog', 'Post')Nota: Esto solo funciona si 'blog' es una aplicación instalada.
importe sus modelos con el espacio de nombres de la app en lugar de la importación relativa, de modo que se mantenga la estructura estándar.
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()Consulte aquí el problema de error no resuelto relacionado con pycharm en proyectos django