django allauth 参考社交账号
django allauth reference social account
我是 Django 的新手,我正在尝试构建一个应用程序,用户可以在其中 post "trip"(使用 django-allauth、Facebook 社交帐户登录时)和我希望将该旅行模型绑定到创建它的用户的社交帐户中。
我在将行程保存到数据库时遇到问题。我不得不用 Javascript 修改输入的数据,所以我使用 ajax POST 请求,我用 <p class="social-id">{{ user.socialaccount_set.all.0.uid }}</p>
[=14= 获取用户的社交 ID ]
我的模型是:
class Trip(models.Model):
driver = models.OneToOneField(allauth.socialaccount.models.SocialAccount)
我收到一条错误消息:Cannot assign "'10206730564687878'": "Trip.driver" must be a "SocialAccount" instance.
我尝试让模型驱动程序字段引用 allauth.socialaccount.models.SocialAccount.uid
,但这也不起作用。
您正在使用 OneToOneField
。每个用户只能post一次吗?如果您希望他们能够 post 多个,则应改用 ForeignKey()
。
此外,是否有理由将其链接到 SocialAccount
实例,而不是主 User
实例?我会用
class Trip(models.Model):
driver = models.ForeignKey(User, models.CASCADE, related_name='trips')
现在,您收到错误的原因是因为您试图将 str
(文本字符串)分配给 OneToOneField
字段。但是该字段需要一个 SocialAccount
.
的实例
要修复它,而不是 trip.driver = "10206730564687878"
,您需要获取 SocialAccount
的实例(例如对于当前用户),然后将其分配给驱动程序:
soc_acc = SocialAccount.objects.get(user=request.user)
trip.driver = soc_acc
trip.save()
这会给 trip.driver
一个 SocialAccount
实例。
还有一件事:如果是登录用户添加自己,则无需在表单中发送任何 SocialAccount
ID。相反,从登录用户的 request.user
对象中获取它。
我是 Django 的新手,我正在尝试构建一个应用程序,用户可以在其中 post "trip"(使用 django-allauth、Facebook 社交帐户登录时)和我希望将该旅行模型绑定到创建它的用户的社交帐户中。
我在将行程保存到数据库时遇到问题。我不得不用 Javascript 修改输入的数据,所以我使用 ajax POST 请求,我用 <p class="social-id">{{ user.socialaccount_set.all.0.uid }}</p>
[=14= 获取用户的社交 ID ]
我的模型是:
class Trip(models.Model):
driver = models.OneToOneField(allauth.socialaccount.models.SocialAccount)
我收到一条错误消息:Cannot assign "'10206730564687878'": "Trip.driver" must be a "SocialAccount" instance.
我尝试让模型驱动程序字段引用 allauth.socialaccount.models.SocialAccount.uid
,但这也不起作用。
您正在使用 OneToOneField
。每个用户只能post一次吗?如果您希望他们能够 post 多个,则应改用 ForeignKey()
。
此外,是否有理由将其链接到 SocialAccount
实例,而不是主 User
实例?我会用
class Trip(models.Model):
driver = models.ForeignKey(User, models.CASCADE, related_name='trips')
现在,您收到错误的原因是因为您试图将 str
(文本字符串)分配给 OneToOneField
字段。但是该字段需要一个 SocialAccount
.
要修复它,而不是 trip.driver = "10206730564687878"
,您需要获取 SocialAccount
的实例(例如对于当前用户),然后将其分配给驱动程序:
soc_acc = SocialAccount.objects.get(user=request.user)
trip.driver = soc_acc
trip.save()
这会给 trip.driver
一个 SocialAccount
实例。
还有一件事:如果是登录用户添加自己,则无需在表单中发送任何 SocialAccount
ID。相反,从登录用户的 request.user
对象中获取它。