我正在使用Python 3.4,Django 1.7.1(书中考虑的版本),Postgres 9.3以及我的IDE是Eclipse。
我一直在学习《轻量级Django-Elman和Lavin》这本书,并且在第4章和第5章卡住了好几天。在这些章节中,我们应该使用rest框架和backbone.js。例如,请查看:
几天前,我尝试按照书中介绍的方式编写代码,并检查上面链接中提供的示例。然而,由于我无法前进,我决定复制上面链接中提供的代码并尝试运行。同样的错误出现了:
AssertionError at /
Relational field must provide a `queryset` argument, or set read_only=`True`.
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.7.1
Exception Type: AssertionError
Exception Value:
关系字段必须提供一个queryset
参数,或将read_only设置为True
。
Exception Location: /usr/local/lib/python3.4/dist-packages/rest_framework/relations.py in __init__, line 35
Python Executable: /usr/bin/python3
Python Version: 3.4.0
Python Path:
['/home/daniel/workspace/Scrum',
'/usr/lib/python3.4',
'/usr/lib/python3.4/plat-i386-linux-gnu',
'/usr/lib/python3.4/lib-dynload',
'/usr/local/lib/python3.4/dist-packages',
'/usr/lib/python3/dist-packages']
这个错误发生在“relations.py”内,它属于django-rest-framework。由于我正在使用上面链接中呈现的精确代码,所以不应该有错误。实际上,我更改的唯一代码片段是在出现错误后的“settings.py”中:
之前:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'scrum',
}
}
现在:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'scrum',
'USER': 'daniel',
'PASSWORD': '12345',
'HOST': '127.0.0.1',
'PORT': '5432',
}
正如下面所示,我的用户“daniel”具有以下属性:
Role name | Attributes | Member of | Description
-----------+------------------------------------------------+-----------+-------------
daniel | Superuser, Create DB | {} |
postgres | Superuser, Create role, Create DB, Replication | {} |
最终,看起来我没有安装 psycopg2 的任何问题,因为我能够像下面展示的那样创建“scrum”。事实上,我的系统数据库列表如下:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
scrum | daniel | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/daniel +
| | | | | daniel=CTc/daniel
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
有人能帮我找出问题所在吗?