Django-当尝试在数据库中存储oauth2凭据时,总是接收__init__()只需要2个参数(给定5个)



在用户使用其youtube帐户验证其帐户后,我一直在尝试保存凭据。我一直在遵循这个例子,将我新创建的凭据存储在数据库中以备将来使用。https://code.google.com/p/google-api-python-client/source/browse/samples/django_sample/.在它中,我们应该为django创建一个凭据模型,如下所示。

from django.contrib.auth.models import User
from django.db import models
from oauth2client.django_orm import CredentialsField
...
class CredentialsModel(models.Model):
id = models.ForeignKey(User, primary_key=True)
credential = CredentialsField()

我使用的是South,所以我不得不创建一个自定义迁移,因为它不喜欢我的模型中的自定义"CredentialsField"。我从此回购复制用户的迁移https://github.com/ssutee/watna_location/blob/master/location/migrations/0010_auto__add_credentialsmodel.py#L19,如下所示。

def forwards(self, orm):
    # Adding model 'CredentialsModel'
    db.create_table('location_credentialsmodel', (
        ('id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], primary_key=True)),
        ('credential', self.gf('oauth2client.django_orm.CredentialsField')(null=True)),
    ))
    db.send_create_signal('location', ['CredentialsModel'])

现在,每次我运行我的应用程序时,它都会在上崩溃

storage = Storage(CredentialsModel, 'id', user, 'credential')

错误为"init()正好占用2个参数(给定5个)"。我敢肯定,这应该需要5个论点,而不是从文件中判断的2个。有人知道我做错了什么吗?

在我发布这篇文章后,解决方案马上就出现了。我需要从的python通用版本更改导入语句

from oauth2client.file import Storage

到特定于Django版本的

from oauth2client.django_orm import Storage

相关内容

  • 没有找到相关文章

最新更新