0

私はこのトレースバックを取得します:

Traceback (most recent call last):
  File "./manage.py", line 38, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/mgregory/Documents/cm_central/cmh_server/models.py", line 88, in <module>
    class VersionSerializer(serializers.ModelSerializer):
  File "/Users/mgregory/Documents/cm_central/cmh_server/models.py", line 89, in VersionSerializer
    brzs= BrzSerializer(many=True)
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/rest_framework/serializers.py", line 198, in __init__
    self.fields = self.get_fields()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/rest_framework/serializers.py", line 234, in get_fields
    default_fields = self.get_default_fields()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/rest_framework/serializers.py", line 732, in get_default_fields
    reverse_rels = opts.get_all_related_objects()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/db/models/options.py", line 498, in get_all_related_objects
    include_proxy_eq=include_proxy_eq)]
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/db/models/options.py", line 510, in get_all_related_objects_with_model
    self._fill_related_objects_cache()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/db/models/options.py", line 533, in _fill_related_objects_cache
    for klass in self.apps.get_models(include_auto_created=True):
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/utils/lru_cache.py", line 101, in wrapper
    result = user_function(*args, **kwds)
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/apps/registry.py", line 168, in get_models
    self.check_models_ready()
  File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

このコード (models.py) から:

# Serializers for transmitting CMx install information over HTTP

class BrzSerializer(serializers.ModelSerializer):
    class Meta:
        model = Brz
        fields=('filename',)

class VersionSerializer(serializers.ModelSerializer):
    brzs= BrzSerializer(many=True)
    class Meta:
        model = Version
        fields=('name', 'for_mac', 'for_windows', 'brzs')

「まだ登録していないため、VersionSerializer は BrzSerializer を持つことができません」と言っているようです。

AppRegisteryNotReady に関連する他の SO の質問を見てきましたが、この症状に一致するものは見つかりませんでした。確かに、このような依存モデルのチェーンを定義できなければなりませんか?

4

1 に答える 1

0

models.py内部にシリアライザーの宣言があると、アプリ レジストリの読み込みが完了する前にそのアプリケーションが使用されることが判明しました。

models.pyこれらのシリアライザーを宣言する場所は実際には間違っています (ただし、使用方法の例に基づいてそのようにしたことは 99% 確信しています)。

修正は、シリアライザーの宣言を独自のファイルに移動し (models.py が定義しているデータベース スキーマとは関係がないため、これは理にかなっています)、それをビューからインポートします。ビューが開始されるまでに、アプリ レジストリの準備が整います。

于 2014-10-19T07:46:56.520 に答える