如何使用django-allauth预取SocialAccount?

时间:2017-12-02 09:30:29

标签: python django django-allauth prefetch

Django-allauth包创建一个模型SocialAccount,其中包含一个ForeignKey to User。我无法在查询集中预取此信息。

我的模特:

class Placerating(models.Model):
    author = models.ForeignKey('auth.User', null=True, on_delete=models.SET_NULL)

Django-allauth模型:

class SocialAccount(models.Model):
    user = models.ForeignKey(allauth.app_settings.USER_MODEL, on_delete=models.CASCADE)

当我尝试预取这些数据时:

rating = Placerating.objects.all().prefetch_related('author__socialaccount')

我收到以下错误消息:

AttributeError: Cannot find 'socialaccount' on User object, 'author__socialaccount' is an invalid parameter to prefetch_related()

有任何线索吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我得到了答案。

SocialAccount是反向外键,因此必须在末尾添加“ _set”:

rating = Placerating.objects.all()。prefetch_related('author__socialaccount_set')