我的剧本发生了一些非常奇怪的事情,我整天都在调试,并且无处可去。我搜索的范围很广,没有解决我的问题,标题可能会产生误导,但那是我得到的错误。
我使用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列表并且它正常工作,然后我为第二个用户做了它也工作得很好。到目前为止,这两个用户是数据库中唯一的用户。当我删除用户过滤器时,它会通过第一个用户并填充模型,但在第二个用户上失败。
idk还有什么可尝试的。这是我的模特。
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')
答案 0 :(得分:2)
你得到的错误告诉了你很多。 "管理器"是指Model.objects
,因此您尝试在.objects
SocialToken
上访问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
个实例并重命名,以便他们重新DateTime.Parse()
。有关类/实例/变量命名约定的更多信息,请参阅the Python Style Guide(这是一个很好的阅读!)。