2017-02-21 11 views
-2

私は3つのモデルを持っており、第1モデルの第3モデルからすべての関連オブジェクトのセットを取得したいと思います。多対1リレーションシップのオブジェクトのセットを2レベル深く取得する

Clas Dealer(models.Model): 
.. 

class Make(models.Model): 
dealer = models.ForeignKey(Dealer) 
.. 

Class Modell(models.Model): 
Make = models.ForeignKey(Make) 
.. 

がどのように私は編集 私ができるディーラーオブジェクトがkwargs['instance']

の形で渡さなっているDealer?与え関連Modellすべてのオブジェクトを取得する方法について行くだろう:例えば

使用しないでください.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 私は準備ができて外のモデルのいずれかをインポートしようとすると、私が手:

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の内部でモデルのインポートを行う方法があります:)

+0

*なぜあなたはフィルタを使用できないと思われますか?それがデータベースから物事を得る方法です。あなたは代わりに何を使うつもりですか? –

+0

私はapps.pyのpythonファイルの信号を更新しています。 'django.apps import AppConfig'からです。したがって、私は.filterを使用できないと確信しています。私ができるなら、私はそれをどうやってやるのか分かりません。 –

+0

まあ、それは何と関係がありますか?なぜあなたはフィルタを使用できないのですか? –

答えて

1

Model.objects.filter(Make__dealer=kwargs['instance']) 
+0

ありがとうございました。私はオブジェクトを使用することはできません。フィルタ、それは問題です。私は編集を追加します –

+0

私のインポートの問題を解決した後、上記の動作します。予想通り。 –

関連する問題