Форум сайта python.su
0
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='Категории') #################################################################################
# -*- 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
Офлайн
568
Насколько я знаю, поддержка ForeignKey полей появилась в последней версии, у вас какая версия modeltranslation установлена?
Офлайн
0
версия последния + Django 1.6 и ForeignKey работает, но по примеру выше не работает
Офлайн
568
Может, конечно, глупость, но попробуй регистрировать трансляторы в том же порядке, в котором создаются модели.
Офлайн
0
если поменять местами то не находит модель:
modeltranslation.translator.NotRegistered: The model "Knowledge" is not registered for translation
Офлайн
568
А если в ForeignKey в Knowledge не название класса строкой, а непосредственно класс и у всех в Meta указать app_label?
Офлайн
0
не помогло
Офлайн
35
код в translation.py не соответствует тому от которого приведена ошибка.
Офлайн
0
да действительно, я удалил несколько полей CharField и TextField + в translation.py чуть больше fields.
тут выходит, что может быть Category, CategoryGo или Category, Knowledge, а все не хочет быть.
если убрать поле name_category (Knowledge) у translation.py то работает, но по условии задачи так нельзя.
Отредактировано Rebra4 (Март 15, 2015 08:36:30)
Офлайн