Найти - Пользователи
Полная версия: ошибка
Начало » Django » ошибка
1
Rebra4
models.py
#################################################################################
#Категории
class Category(models.Model):
  name_category=models.CharField(max_length=15,verbose_name='Name')
  def __unicode__(self):
    return self.name_category
#################################################################################
#Подкатегории
class CategoryGo(models.Model):
  option=models.ForeignKey(Category)
  name_category=models.CharField(max_length=15)
  def __unicode__(self):
    return self.name_category
#################################################################################
#Ключевая информация
class Knowledge(models.Model):
  name_category=models.ForeignKey('CategoryGo',verbose_name='Категории')
#################################################################################
translation.py
# -*- coding: utf-8 -*-
from modeltranslation.translator import translator, TranslationOptions
from mind.models import Category,CategoryGo,Knowledge
class KnowledgeTranslationOptions(TranslationOptions):
    fields = ('name_category',)
class CategoryGoTranslationOptions(TranslationOptions):
    fields = ('option','name_category',)
class CategoryTranslationOptions(TranslationOptions):
    fields = ('name_category',)
translator.register(Knowledge, KnowledgeTranslationOptions)
translator.register(CategoryGo, CategoryGoTranslationOptions)
translator.register(Category, CategoryTranslationOptions)
Ошибка
(newsite)alex@plus:~/nextstep/newsite/newsite$ python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/base.py", line 284, in execute
    self.validate()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/base.py", line 310, in validate
    num_errors = get_validation_errors(s, app)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/core/management/validation.py", line 34, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 196, in get_app_errors
    self._populate()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 75, in _populate
    self.load_app(app_name, True)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 99, in load_app
    models = import_module('%s.models' % app_name)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/registration/models.py", line 15, in <module>
    User = get_user_model()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 127, in get_user_model
    user_model = get_model(app_label, model_name)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 271, in get_model
    self._populate()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 75, in _populate
    self.load_app(app_name, True)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/db/models/loading.py", line 99, in load_app
    models = import_module('%s.models' % app_name)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/modeltranslation/models.py", line 84, in <module>
    handle_translation_registrations()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/modeltranslation/models.py", line 80, in handle_translation_registrations
    autodiscover()
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/modeltranslation/models.py", line 31, in autodiscover
    import_module(module)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/alex/nextstep/newsite/newsite/mind/translation.py", line 13, in <module>
    translator.register(CategoryGo, CategoryGoTranslationOptions)
  File "/home/alex/nextstep/newsite/local/lib/python2.7/site-packages/modeltranslation/translator.py", line 379, in register
    ' "%s"' % (model.__name__, descendants[0]))
IndexError: list index out of range
С простыми моделями, modeltranslation хорошо работает, но по этим моделям что то не хочет.
В чем может быть причина и как исправить?
FishHook
Насколько я знаю, поддержка ForeignKey полей появилась в последней версии, у вас какая версия modeltranslation установлена?
Rebra4
версия последния + Django 1.6 и ForeignKey работает, но по примеру выше не работает
FishHook
Может, конечно, глупость, но попробуй регистрировать трансляторы в том же порядке, в котором создаются модели.
Rebra4
если поменять местами то не находит модель:
modeltranslation.translator.NotRegistered: The model "Knowledge" is not registered for translation
FishHook
А если в ForeignKey в Knowledge не название класса строкой, а непосредственно класс и у всех в Meta указать app_label?
Rebra4
не помогло
inoks
код в translation.py не соответствует тому от которого приведена ошибка.
Rebra4
да действительно, я удалил несколько полей CharField и TextField + в translation.py чуть больше fields.
тут выходит, что может быть Category, CategoryGo или Category, Knowledge, а все не хочет быть.
если убрать поле name_category (Knowledge) у translation.py то работает, но по условии задачи так нельзя.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB