Проект Django - не может синхронизировать таблицы данных - syncdb (ошибка: нет модуля с именем XYZ)

Я следую учебному пособию по Django, которое представляет собой серию коротких задач, которые ведут к созданию веб-приложения для управления закладками.

До сих пор я: - правильно установил Django 1.4.2 - создал проект и его папки (будь ниже, мой вопрос связан с этим...) - настроил движок базы данных (sqlite3) - определил views.py, чтобы показать простой сообщение на веб-странице (Поздравляем, вы создали веб-страницу...) - определили запись для главной страницы в urls.py. Увидеть ниже:

from django.conf.urls.defaults import *
from bookmarks.views import *
urlpatterns = patterns('',
(r'^$', main_page),
)

итак, все работает как шарм.

Тогда мне пришлось работать над базой данных. Я:

-создал модель данных, набрав в файле models.py следующее:

from django.db import models

class Link(models.Model):
    url = models.URLField(unique=True)

-установленные приложения определены в settings.py следующим образом:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django_bookmarks.bookmarks',
)

вот сложная часть. Мне пришлось синхронизировать таблицы данных. Поэтому я напечатал:

manage.py syncdb

но я получил сообщение об ошибке: модуль закладок отсутствует

Итак, я проверил структуру папок, и это было следующим

django_bookmarks
├── bookmarks
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── django_bookmarks
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Итак, в этот момент я переместил папку "закладки" в django_bookmarks (подпапка). Когда я сделал "syncdb", он работал нормально. Затем я заменил "закладки" на прежнее место, как показано на дереве выше. Поэтому я продолжаю думать, что победил...

Затем мне пришлось работать над моделью данных Bookmark Data. Я следовал указаниям руководства и набрал в bookmarks/models.py следующее:

from django.contrib.auth.models import User

class Bookmark(models.Model):
    title = models.CharField(maxlength=200)
    user = models.ForeignKey(User)
    link = models.ForeignKey(Link)

Чтобы создать таблицу, мне снова пришлось набирать "manage.py syncdb". НО тогда приходит сообщение об ошибке: нет модуля закладок. Поэтому я снова вставил папку "закладки" в "django_bookmarks" (подпапку), думая, что это будет работать… но это не так… он напечатал около 17 строк (обратная связь Python), из которых строка 15 (или 16…) было о models.py (models.CharField(maxlength=200)) и строке в

Python27/lib/site-packages/django/db/models/fields/__init__

и самое последнее сообщение:

TypeError: __init__() got an unexpected keyword argument 'maxlength'

Я не вижу, что не так. Я следовал руководству (за исключением случаев, когда я не мог синхронизировать таблицы и прибегал к вставке папки "закладки" в другом месте...) ... и дерево папок кажется довольно стандартным. Почему он не находит модуль "закладки"?

Любая помощь подойдет:-) спасибо!

3 ответа

Решение

Нет никаких maxlength атрибут CharField. но есть max_length, вам не хватает подчеркивания

Учебное пособие может быть для более старой версии, где startapp создал папку приложения в каталоге приложения проекта. Теперь он создается в каталоге проекта (внешняя папка django_bookmarks), поэтому ваш файл SETTINGS.py должен выглядеть так:

INSTALLED_APPS = (
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
     'bookmarks',
)

В INSTALLED_APPSтолько поставить bookmarks скорее, чем django_bookmarks.bookmarks, Из-за нового макета в Django 1.4 у меня была такая же проблема год назад...

Другие вопросы по тегам