使用Django-ROA创建一个简单的远程模型

时间:2013-10-17 03:18:24

标签: python django django-models

我最近遇到django-roa,并认为这非常适合我正在进行的项目。不幸的是,我在他们的基本榜样上遇到了最艰难的时刻。我已经建立了一个基本的django项目,所以我很肯定这个问题与初始设置无关。

我有一个简单的模型:

from django.db import models
from django_roa import Model

class RemoteModel(Model):
    slug = models.CharField(max_length=255, blank=True, null=True)

    @staticmethod
    def get_resource_url_list():
        return u'http://my-restful-url/path/resource'

...以下是我settings.py的相关部分:

INSTALLED_APPS = (
    'django_roa',
    'myapps',
    # ... other default apps ...
)

# ROA Stuff
ROA_MODELS = True
ROA_FORMAT = 'json'
ROA_DJANGO_ERRORS = True
ROA_HEADERS = {
    'ApiKey': 'apikey'
}

然而,当我去测试这个例子时,会发生这种情况......

>>> from myapps.models import RemoteModel
>>> RemoteModel.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'objects'
>>> type(RemoteModel)
<type 'NoneType'>

我错过了什么吗?从我所看到的,设置几乎与提供的twitter example app相同。

如何使用Django-ROA设置简单的远程模型?

修改
以下是安装的软件包:

Django==1.4.1
django-roa==1.7
http-parser==0.8.3
restkit==4.2.2
socketpool==0.5.3
wsgiref==0.1.2

1 个答案:

答案 0 :(得分:0)

在撰写本文时,上面的示例应该可以正常工作。问题是django-roa代码。列出的软件包(1.7)不支持Django 1.2以外的版本。

this pull request中已经有工作让django-roa在Django 1.5中工作,但为了让事情适用于1.4或1.3,你需要按照拉取请求中的描述进行以下更改:

  

是的,只需要从[{] attached_to方法调用中删除[{] add_to_class参数,以便支持django 1.4并从only_installed中删除get_model参数函数调用以便在捕获TypeError之后支持django 1.3。 [{1}}中都有[更改]。