python manage.py syncdb не тянет от models.py - PullRequest
0 голосов
/ 07 декабря 2010

Я не получаю python manage.py syncdb для создания таблиц для моих моделей;По-видимому, это связано с тем, что при попытке импорта моих моделей возникает исключение, и я несколько озадачен этим исключением:

jhayward@jhayward81QDLD1 ~/project
$ python manage.py shell
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import models
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/jhayward/project/models.py", line 23, in <module>
    class architecture(models.Model):
  File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 48, in
__new__
    kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
>>>

Импорт моделей в виде неукрашенных django.db.models не помогает.Models.py находится в том же каталоге, из которого я пытаюсь импортировать;похоже, что он не ведет себя по-другому, когда я добавляю текущий каталог в свою PYTHONPATH.

Что происходит в этом сообщении об ошибке, и что мне нужно сделать, чтобы помочь ему?

Основная структура файла models.py:

from django.db import models

example_choice = (
    (0, u'first choice'),
    (1, u'second choice'),
    )

[more such choices]

class architecture(models.Model):                                                 
    name = models.TextField(null = True, blank = True)

[more such classes, with more fields and some interconnections but no more sophisticated syntax]

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

У вас должен быть пакет приложения (например, myapp), и в нем должны быть модели (myapp / models.py) Затем вы можете импортировать myapp.models или из моделей импорта myapp.

Ошибка в том, что django пытается найти имя приложения как пакет, содержащий модуль моделей (путь к модулю моделей должен иметь как минимум 2 уровня глубины).

Кроме того, приложение должно быть объявлено в INSTALLED_APPS

1 голос
/ 07 декабря 2010

Модели должны содержаться в приложении, а не в проекте напрямую.

...