【发布时间】:2017-02-21 16:10:53
【问题描述】:
我有 3 个模型,我想从给定第一个模型的第 3 个模型中获取所有相关对象的集合。
例如:
Clas Dealer(models.Model):
..
class Make(models.Model):
dealer = models.ForeignKey(Dealer)
..
Class Modell(models.Model):
Make = models.ForeignKey(Make)
..
在给定Dealer? 的情况下,我将如何获取所有相关的Modell 对象?经销商对象以kwargs['instance'] 的形式传递
编辑
我不能使用.objects.filter(..)
编辑 2
from django.apps import AppConfig
from django.db import models
class CarConfig(AppConfig):
name = 'cars'
verbose_name = 'cars'
def ready(self):
from cars.models import Car, Make, Modell
models.signals.post_save.connect(CarConfig.reindex_related_carmodels, sender=Dealer, weak=False,
dispatch_uid="reindex_related_carmodels")
@staticmethod
def reindex_related_carmodels(sender, **kwargs):
from cars.search_indexes import ModelIndex
models = Modell.objects.all()
...
我得到的错误是:global name 'Modell' is not defined
编辑 3 如果我尝试在 ready 之外导入任何模型,我会得到:
File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 124, in check_apps_ready
web_1 | raise AppRegistryNotReady("Apps aren't loaded yet.")
web_1 | django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
编辑 4 解决方案是在@staticmethod 中进行模型导入:)
【问题讨论】:
-
为什么你认为你不能使用过滤器?这是从数据库中获取内容的方法。你打算改用什么?
-
我正在更新apps.py 中python 文件中的信号。
from django.apps import AppConfig。因此,我很确定我不能使用 .filter。如果可以的话,我不知道该怎么做。 -
呃,这有什么关系?为什么这意味着您不能使用过滤器?
-
因为您无权访问该级别的 Djano 管理器
-
是的。请显示您执行此操作的实际代码,以及您尝试时遇到的错误。
标签: python django elasticsearch