无法通过 SocialToken 实例访问管理器
Manager isn't accessible via SocialToken instances
我的脚本发生了一些非常奇怪的事情,我已经调试了一整天,但一无所获。我进行了广泛的搜索,但没有解决我的问题,标题可能具有误导性,但这就是我得到的错误。
我正在使用 django-allauth,我有 SocialAccounts 和 SocialTokens
socialaccounts = SocialAccount.objects.filter(provider='facebook')
for SocialAccount in socialaccounts:
socialtokens = SocialToken.objects.filter(id=SocialAccount.id)
for SocialToken in socialtokens:
#get a few values, set a few values
#at the end update or create a custom model
obj, created = FacebookPagesList.objects.update_or_create(user=P.user, Page_ID=P.Page_ID, uid=P.uid, defaults = updated_values)
我已经调试了好几次,它只运行一次就工作正常,IE 我用一个用户的用户过滤器限制 SocialAccount 列表并且它工作正常,然后我为第二个用户做它并且它工作没关系。到目前为止,这 2 个用户是数据库中唯一的用户。当我删除用户过滤器时,它通过第一个用户并填充模型,但在第二个用户上失败。
不知道还有什么可以尝试的。这是我的模型。
class FacebookPagesList(models.Model):
user = models.ForeignKey(SocialAccount)
Page_ID = models.CharField('Page ID', max_length=255)
Page_Name = models.CharField('Page Name', max_length=255)
Page_Access_Token = models.TextField('Page Token')
Page_Category = models.CharField('Page Category', max_length=100)
uid = models.CharField('FB User ID',max_length=255)
Perms = models.TextField('Permissions')
getdata = models.BooleanField('Pull data?', default=True, null=False)
DateAdded = models.DateTimeField('Date Added', default=timezone.now)
DateModified = models.DateTimeField('Date Modified', default=timezone.now)
LastDataPull = models.DateTimeField('Last Data Pulled', default='1990-01-01 00:00:00')
#id = models.IntegerField('ID', default=0, primary_key=True)
def __str__(self):
return self.Page_Name
class Meta:
unique_together = ('user', 'Page_ID')
你得到的错误告诉了你很多。 "Manager" 指的是 Model.objects
,因此您在某处尝试访问单个 SocialToken
.
上的 .objects
我猜你的代码中某处有如下内容:
SocialToken = SocialToken.objects.first() # This isn't good!
...
tokens = SocialToken.objects.all() # This will cause your error
在这里,因为 SocialToken
指的是一个实例而不是您的模型,您将无法访问 SocialToken.objects
,您的经理。
您在上面粘贴的代码中使用 SocialAccount
完成了此操作。使用 social_account
而不是 SocialAccount
来指代个人帐户:
social_accounts = SocialAccount.objects.filter(provider='facebook')
for social_account in social_accounts:
socialtokens = SocialToken.objects.filter(id=social_account.id)
检查您的代码,看看是否有任何 CapWords
个实例并将它们重命名为 separated_with_underscores
。有关 class/instance/variable 命名约定的更多信息,请参阅 the Python Style Guide(这是一本好书!)。
我的脚本发生了一些非常奇怪的事情,我已经调试了一整天,但一无所获。我进行了广泛的搜索,但没有解决我的问题,标题可能具有误导性,但这就是我得到的错误。
我正在使用 django-allauth,我有 SocialAccounts 和 SocialTokens
socialaccounts = SocialAccount.objects.filter(provider='facebook')
for SocialAccount in socialaccounts:
socialtokens = SocialToken.objects.filter(id=SocialAccount.id)
for SocialToken in socialtokens:
#get a few values, set a few values
#at the end update or create a custom model
obj, created = FacebookPagesList.objects.update_or_create(user=P.user, Page_ID=P.Page_ID, uid=P.uid, defaults = updated_values)
我已经调试了好几次,它只运行一次就工作正常,IE 我用一个用户的用户过滤器限制 SocialAccount 列表并且它工作正常,然后我为第二个用户做它并且它工作没关系。到目前为止,这 2 个用户是数据库中唯一的用户。当我删除用户过滤器时,它通过第一个用户并填充模型,但在第二个用户上失败。
不知道还有什么可以尝试的。这是我的模型。
class FacebookPagesList(models.Model):
user = models.ForeignKey(SocialAccount)
Page_ID = models.CharField('Page ID', max_length=255)
Page_Name = models.CharField('Page Name', max_length=255)
Page_Access_Token = models.TextField('Page Token')
Page_Category = models.CharField('Page Category', max_length=100)
uid = models.CharField('FB User ID',max_length=255)
Perms = models.TextField('Permissions')
getdata = models.BooleanField('Pull data?', default=True, null=False)
DateAdded = models.DateTimeField('Date Added', default=timezone.now)
DateModified = models.DateTimeField('Date Modified', default=timezone.now)
LastDataPull = models.DateTimeField('Last Data Pulled', default='1990-01-01 00:00:00')
#id = models.IntegerField('ID', default=0, primary_key=True)
def __str__(self):
return self.Page_Name
class Meta:
unique_together = ('user', 'Page_ID')
你得到的错误告诉了你很多。 "Manager" 指的是 Model.objects
,因此您在某处尝试访问单个 SocialToken
.
.objects
我猜你的代码中某处有如下内容:
SocialToken = SocialToken.objects.first() # This isn't good!
...
tokens = SocialToken.objects.all() # This will cause your error
在这里,因为 SocialToken
指的是一个实例而不是您的模型,您将无法访问 SocialToken.objects
,您的经理。
您在上面粘贴的代码中使用 SocialAccount
完成了此操作。使用 social_account
而不是 SocialAccount
来指代个人帐户:
social_accounts = SocialAccount.objects.filter(provider='facebook')
for social_account in social_accounts:
socialtokens = SocialToken.objects.filter(id=social_account.id)
检查您的代码,看看是否有任何 CapWords
个实例并将它们重命名为 separated_with_underscores
。有关 class/instance/variable 命名约定的更多信息,请参阅 the Python Style Guide(这是一本好书!)。