Python “在我的自定义模板过滤器文件中导入models.py”;django.core.exceptions.AppRegistryNotReady:应用程序不可用;“我还没装。”;

Python “在我的自定义模板过滤器文件中导入models.py”;django.core.exceptions.AppRegistryNotReady:应用程序不可用;“我还没装。”;,python,django,Python,Django,我正在创建模板过滤器,它将获取值并在我的模型中搜索它 import django django.setup() 试过了,没用 这是我的密码 目录\自定义\标记.py from catalog import models from django import template, shortcuts register = template.Library() @register.filter(name='test') def test(value): item = shortcuts.

我正在创建模板过滤器,它将获取值并在我的模型中搜索它

import django
django.setup()
试过了,没用

这是我的密码

目录\自定义\标记.py

from catalog import models
from django import template, shortcuts

register = template.Library()

@register.filter(name='test')
def test(value):
    item = shortcuts.get_object_or_404(models.Equipment, pk=value)
    return item.name
from django.db import models


class EquipmentCategory(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    category = models.CharField(verbose_name="Category", max_length=20, unique=True)

    def __str__(self):
        return self.name


class EquipmentSubCategory(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    category = models.ForeignKey(EquipmentCategory, on_delete=models.CASCADE)
    subcategory = models.CharField(verbose_name="Sub Category", max_length=20, unique=True)

    def __str__(self):
        return self.name


class Material(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    material = models.CharField(verbose_name="Material", max_length=30, unique=True)

    def __str__(self):
        return self.name


class Equipment(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30)
    # category = models.CharField(verbose_name="Category", max_length=20)
    # subcategory = models.CharField(verbose_name="Sub Category", max_length=20)
    category = models.ForeignKey(EquipmentCategory, on_delete=models.CASCADE)
    subcategory = models.ForeignKey(EquipmentSubCategory, on_delete=models.CASCADE)
    dimension_x = models.IntegerField(verbose_name="Dimensions X(cm)", default=0)
    dimension_y = models.IntegerField(verbose_name="Dimensions Y(cm)", default=0)
    dimension_z = models.IntegerField(verbose_name="Dimensions Z(cm)", default=0)
    weight = models.FloatField(verbose_name="Weight(kg)", default=0)
    qty = models.IntegerField(verbose_name="Quantity", default=0)
    image = models.ImageField(verbose_name="Foto", blank=True, upload_to='fotos/', max_length=20)
    accessories = models.TextField(verbose_name="accessories", blank=True)
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
    # material = models.CharField(verbose_name="Material", max_length=20, null=True)
    color = models.CharField(verbose_name="Color", max_length=20, null=True)

    location = models.CharField(verbose_name="Location", blank=True, max_length=20)
    description = models.TextField(verbose_name="Description", blank=True)

    def __str__(self):
        return self.name

型号.py

from catalog import models
from django import template, shortcuts

register = template.Library()

@register.filter(name='test')
def test(value):
    item = shortcuts.get_object_or_404(models.Equipment, pk=value)
    return item.name
from django.db import models


class EquipmentCategory(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    category = models.CharField(verbose_name="Category", max_length=20, unique=True)

    def __str__(self):
        return self.name


class EquipmentSubCategory(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    category = models.ForeignKey(EquipmentCategory, on_delete=models.CASCADE)
    subcategory = models.CharField(verbose_name="Sub Category", max_length=20, unique=True)

    def __str__(self):
        return self.name


class Material(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30, unique=True)
    material = models.CharField(verbose_name="Material", max_length=30, unique=True)

    def __str__(self):
        return self.name


class Equipment(models.Model):
    name = models.CharField(verbose_name="Name", max_length=30)
    # category = models.CharField(verbose_name="Category", max_length=20)
    # subcategory = models.CharField(verbose_name="Sub Category", max_length=20)
    category = models.ForeignKey(EquipmentCategory, on_delete=models.CASCADE)
    subcategory = models.ForeignKey(EquipmentSubCategory, on_delete=models.CASCADE)
    dimension_x = models.IntegerField(verbose_name="Dimensions X(cm)", default=0)
    dimension_y = models.IntegerField(verbose_name="Dimensions Y(cm)", default=0)
    dimension_z = models.IntegerField(verbose_name="Dimensions Z(cm)", default=0)
    weight = models.FloatField(verbose_name="Weight(kg)", default=0)
    qty = models.IntegerField(verbose_name="Quantity", default=0)
    image = models.ImageField(verbose_name="Foto", blank=True, upload_to='fotos/', max_length=20)
    accessories = models.TextField(verbose_name="accessories", blank=True)
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
    # material = models.CharField(verbose_name="Material", max_length=20, null=True)
    color = models.CharField(verbose_name="Color", max_length=20, null=True)

    location = models.CharField(verbose_name="Location", blank=True, max_length=20)
    description = models.TextField(verbose_name="Description", blank=True)

    def __str__(self):
        return self.name

我得到了这个错误

 File "C:\Users\mro\PycharmProjects\EuroWeb\catalog\templatetags\catalog_custom_tags.py", line 1, in <module>
    from catalog import models
  File "C:\Users\mro\PycharmProjects\EuroWeb\catalog\models.py", line 4, in <module>
    class EquipmentCategory(models.Model):
完全回溯

Traceback (most recent call last):
  File "C:/Users/mro/PycharmProjects/EuroWeb/manage.py", line 21, in <module>
    main()
  File "C:/Users/mro/PycharmProjects/EuroWeb/manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\core\management\__init__.py", line 325, in execute
    settings.INSTALLED_APPS
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\conf\__init__.py", line 79, in __getattr__
    self._setup(name)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\conf\__init__.py", line 66, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\conf\__init__.py", line 157, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\mro\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\mro\PycharmProjects\EuroWeb\EuroWeb\settings.py", line 140, in <module>
    django.setup()
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\apps\config.py", line 90, in create
    module = import_module(entry)
  File "C:\Users\mro\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\mro\PycharmProjects\EuroWeb\catalog\templatetags\catalog_custom_tags.py", line 1, in <module>
    from catalog import models
  File "C:\Users\mro\PycharmProjects\EuroWeb\catalog\models.py", line 4, in <module>
    class EquipmentCategory(models.Model):
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\db\models\base.py", line 103, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\apps\registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
回溯(最近一次呼叫最后一次):
文件“C:/Users/mro/PycharmProjects/EuroWeb/manage.py”,第21行,在
main()
文件“C:/Users/mro/PycharmProjects/EuroWeb/manage.py”,第17行,主
从命令行(sys.argv)执行命令
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\core\management\\uuuuuu init\uuuuuu.py”,第381行,从命令行执行
utility.execute()
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\core\management\\uuuuuu init\uuuuuuuuuuu.py”,执行中第325行
settings.INSTALLED\u应用程序
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\conf\\ uuu init\uuu.py”,第79行,在__
自我设置(名称)
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\conf\\ uuuu init\uuu.py”,第66行,在安装程序中
自包装=设置(设置模块)
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\conf\\ uuu init\uu.py”,第157行,在u init中__
mod=importlib.import\u模块(自我设置\u模块)
文件“C:\Users\mro\AppData\Local\Programs\Python\36\lib\importlib\\uuuu init\uuuu.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第955行,在“查找”和“加载”中解锁
文件“”,第665行,在“加载”中
exec_模块中第678行的文件“”
文件“”,第219行,在“调用”中,删除了“帧”
文件“C:\Users\mro\PycharmProjects\EuroWeb\EuroWeb\settings.py”,第140行,在
django.setup()
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\\uuuuu init\uuuuu.py”,第24行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\apps\registry.py”,第91行,填充
app_config=AppConfig.create(条目)
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\apps\config.py”,第90行,在create中
模块=导入模块(条目)
文件“C:\Users\mro\AppData\Local\Programs\Python\36\lib\importlib\\uuuu init\uuuu.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第955行,在“查找”和“加载”中解锁
文件“”,第665行,在“加载”中
exec_模块中第678行的文件“”
文件“”,第219行,在“调用”中,删除了“帧”
文件“C:\Users\mro\PycharmProjects\EuroWeb\catalog\templatetags\catalog\u custom\u tags.py”,第1行,在
从目录导入模型
文件“C:\Users\mro\PycharmProjects\EuroWeb\catalog\models.py”,第4行,在
类别设备类别(型号.型号):
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\db\models\base.py”,第103行,新__
app\u config=apps.get\u包含app\u config(模块)
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\apps\registry.py”,第252行,包含get_app_config
self.check_apps_ready()
文件“C:\Users\mro\PycharmProjects\EuroWeb\venv\lib\site packages\django\apps\registry.py”,第135行,在check\u apps\u ready中
raise AppRegistryNotReady(“应用程序尚未加载。”)
django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。

文件结构应该是这样的

polls/
__init__.py
models.py
templatetags/
    __init__.py
    poll_extras.py
views.py
和在模板中

{% load poll_extras %}

文件结构应该是这样的

polls/
__init__.py
models.py
templatetags/
    __init__.py
    poll_extras.py
views.py
和在模板中

{% load poll_extras %}

好的。。。我找到了解决办法。如果有人能告诉我为什么会这样,我会很感激

解决办法是:
要将导致此错误的筛选器放入另一个文件

确定。。。我找到了解决办法。如果有人能告诉我为什么会这样,我会很感激

解决办法是:
要将导致此错误的筛选器放入另一个文件

您如何在此处运行Django?您的意思是什么?在我将我的模型文件导入到我的自定义过滤器文件之前,它工作正常。您在这里如何运行Django?您的意思是什么?在我将模型文件导入到自定义过滤器文件之前,它工作得很好。我知道,我有很多过滤器,它们工作得很好。不要只使用模型查询的过滤器请提供所有回溯和文件结构我知道,我有很多过滤器,它们工作得很好。不要仅将此筛选器与模型查询一起使用请提供所有回溯和文件结构