나는 다음과 같은 코드가 있습니다장고 외래 키 - 앱 레지스트리가 준비되지 않았습니다
class A(models.Model):
foo = models.DateField(blank=False, null=False)
class Meta:
get_latest_by = 'foo'
class B(models.Model):
bar = models.ForeignKey(A, default=A.objects.latest())
다른 모델의 최신 객체 기본 포함 갈 수있는 방법은 docs이하는 것입니다 따르면합니다.
Traceback (most recent call last):
File "/home/bla/workspace/foobar/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 427, in execute_from_command_line
utility.execute()
File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 391, in execute
django.setup()
File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 106, in populate
app_config.import_models(all_models)
File "/usr/lib64/python2.7/site-packages/django/apps/config.py", line 190, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/bla/workspace/foobar/b/models.py", line 15, in <module>
class B(models.Model):
File "/home/bla/workspace/foobar/b/models.py", line 54, in B
bar = models.ForeignKey(A, blank=True, null=True, default=A.objects.latest()) # @UndefinedVariable
File "/usr/lib64/python2.7/site-packages/django/db/models/manager.py", line 92, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 497, in latest
return self._earliest_or_latest(field_name=field_name, direction="-")
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 491, in _earliest_or_latest
return obj.get()
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 346, in get
num = len(clone)
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 122, in __len__
self._fetch_all()
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 963, in _fetch_all
self._result_cache = list(self.iterator())
File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 265, in iterator
for row in compiler.results_iter():
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 694, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 769, in execute_sql
sql, params = self.as_sql()
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 100, in as_sql
ordering, o_params, ordering_group_by = self.get_ordering()
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 424, in get_ordering
self.query.get_meta(), default_order=asc):
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 460, in find_ordering_name
field, targets, alias, joins, path, opts = self._setup_joins(pieces, opts, alias)
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 492, in _setup_joins
pieces, opts, alias)
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/query.py", line 1416, in setup_joins
names, opts, allow_many, fail_on_missing=True)
File "/usr/lib64/python2.7/site-packages/django/db/models/sql/query.py", line 1336, in names_to_path
field, model, direct, m2m = opts.get_field_by_name(name)
File "/usr/lib64/python2.7/site-packages/django/db/models/options.py", line 415, in get_field_by_name
cache = self.init_name_map()
File "/usr/lib64/python2.7/site-packages/django/db/models/options.py", line 444, in init_name_map
for f, model in self.get_all_related_m2m_objects_with_model():
File "/usr/lib64/python2.7/site-packages/django/db/models/options.py", line 560, in get_all_related_m2m_objects_with_model
cache = self._fill_related_many_to_many_cache()
File "/usr/lib64/python2.7/site-packages/django/db/models/options.py", line 574, in _fill_related_many_to_many_cache
for klass in self.apps.get_models():
File "/usr/lib64/python2.7/site-packages/django/utils/lru_cache.py", line 101, in wrapper
result = user_function(*args, **kwds)
File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 156, in get_models
self.check_ready()
File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 119, in check_ready
raise RuntimeError("App registry isn't ready yet.")
RuntimeError: App registry isn't ready yet.
내 설정 파일이 INSTALLED_APPS에서 앱 (A와 B) 모두를 포함 : 나는 응용 프로그램 (python manage.py runserver
)를 실행하거나 마이그레이션 (python manage.py makemigrations
) 나는이 역 추적을 얻을 일을하려고하고 있는지 여부
.
장고 버전 1.7a2를 사용하고 있습니다. 는 다시 documentation이 오류에 뭔가가 있습니다 RuntimeError: App registry isn't ready yet. This happens when importing an application configuration or a models module triggers code that depends on the app registry.
을하지만 내 모델에 따라 적용하는 방법을 알아낼 수 없습니다.
도움을 주시면 감사하겠습니다. 고마워요
수는 당신이 의미하는 바를 정교하게 만드십시오 :'어떤 새로운 A 레코드를 추가해도 기본 막대가이 오래된 값에 묶여 있습니다. ' 예를 들어, 새 B를 추가합니다. 기본값은 최신 A입니다. 그런 다음 새 A를 추가하고 나중에 새 B를 추가합니다. 두 번째 B는 첫 번째 것과 다른 기본값을 갖습니다. 권리? –
아니, 귀하의 코드에 대한 그들은 함수 호출 연산자가 시작시 계산 된 값으로 바뀝니다 원인 동일합니다. 새 수정보기 –