Django项目 - 无法同步数据表 - syncdb(错误:没有名为XYZ的模块)

时间:2013-02-02 22:11:51

标签: python django django-syncdb syncdb

我正在关注Django的教程,该教程基本上是一系列简短的待办事项,可以构建一个管理书签的Web应用程序。

到目前为止,我已经: - 正确安装了Django 1.4.2 - 创建项目及其文件夹(低我的问题与...有关) - 设置数据库引擎(sqlite3) - 定义views.py以在网页上显示简单的消息(恭喜您创建了一个网页...) - 在urls.py中为主页面定义了一个条目。见下文:

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

所以,所以f,一切都像魅力一样。

然后我不得不在数据库上工作。我已经:

- 通过在models.py中输入以下内容来创建数据模型:

from django.db import models

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

- 在settings.py中定义了安装的APPS,如下所示:

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

因此,在那时,我将“bookmarks”文件夹移动到django_bookmarks(子文件夹一)。当我做“syncdb”时它工作正常。然后我将“书签”替换为原来的位置,如上图所示。所以我继续以为我胜利了......

然后,我不得不处理数据书签数据模型。我按照教程的指令在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 个答案:

答案 0 :(得分:4)

CharField没有maxlength属性。但有max_length。你错过了下划线

答案 1 :(得分:2)

本教程可能适用于旧版本,其中startapp在项目应用程序目录中创建了app文件夹。现在它是在项目目录(外部django_bookmarks文件夹)中创建的,因此您的SETTINGS.py应如下所示:

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

答案 2 :(得分:1)

INSTALLED_APPS内,只放bookmarks而不是django_bookmarks.bookmarks。由于Django 1.4中的新布局,一年前我遇到了同样的问题......