gpt4 book ai didi

python - 从 django-social-auth 移植到 python-social-auth 时,现场用户的访问器发生冲突

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:53 25 4
gpt4 key购买 nike

我正在将一个项目从使用 django-social-auth 移植到 python-social-auth。我关注了instructions在文档中,但是当我尝试运行项目的测试 (./manage.py test) 时,出现以下错误:

Creating test database for alias 'default' ...
CommandError: One or more models did not validate:
default.usersocialauth: Accessor for field 'user' clashes with related field 'User.social_auth'. Add a related_name argument to the definition for 'user'.
default.usersocialauth: Reverse query name for field 'user' clashes with related field 'User.social_auth'. Add a related_name argument to the definition for 'user'.

./manage.py syncdb 和 ./manage migrate 工作正常,正如预期的那样,因为(如文档所述),python-social-auth 中的模型表名被定义为与 django-social 上使用的表名兼容-auth,所以不需要迁移数据。

最佳答案

遇到同样的问题。

即使 django-social-auth 库已从 INSTALLED_APPS 中删除,django 仍然发现冲突,因为 django-social-auth 和 python-social-auth 使用具有相同 related_name 参数的相同外键。

要确切知道 python-social-auth 与哪个模型发生冲突,请在其中放置一个断点

get_validation_errors (validation.py)

第 148 和 150 行

for r in rel_opts.get_all_related_objects():
if r.field is not f:
if r.get_accessor_name() == rel_name:
e.add(opts, "Accessor for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
if r.get_accessor_name() == rel_query_name:
e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))

查看“r”变量将揭示发生冲突的相关对象。

从系统中完全删除库 django-social-auth 解决了这个问题。

因为最初是用easy_install安装的,所以我用rm -rf把它从site-packages中去掉了,但是也记得去掉easy_install.pth中的名字

你也可以使用pip卸载

希望这对您有所帮助。

关于python - 从 django-social-auth 移植到 python-social-auth 时,现场用户的访问器发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com